Contents

Legal Notices

Chapter 1:
  Quick Start


Chapter 2:
  Introduction and Installation


Chapter 3:
  About Memory Analysis


Chapter 4:
  Finding Memory Leaks


Chapter 5:
  Finding Memory Errors


Chapter 6:
  Startup Options


Chapter 7:
  Viewing Error Messages


Chapter 8:
  Viewing Source Code


Chapter 9:
  Tips and Techniques


Chapter 10:
  Troubleshooting


Chapter 11:
  Obtaining Support


Latest ZeroFault distribution level: 4.87b.

New Features of ZeroFault distributions 4.5 and above.

Logical Heaps

This revision of ZeroFault introduces a new feature: Logical Heaps
While running ZeroFault on your application, you may obtain a new heap by using the "New Heap" button in the GUI or via sending signal 55 to your application. When ZF receives a request for a new heap, it creates a new heap and freezes any additions of new malloc blocks to the prior heap(s). New malloc blocks are always added to the highest number heap. In this way, old heaps cannot grow further and can only decrease in size as your application frees blocks. The ZF GUI allows you to select via the "Heaps" menu, any existing heap in your application. Once selected, other leak related facilities such as "Find Leaks", "Show Heap", and "Take Snapshot" are constrained to the heap of interest.
Use of this facility does not fragment your application's heap. ZF tracks the items in each logical heap for you and avoids using separate physical heaps.
Example of use:

Assume that you have an application with a leak problem. Further assume that it takes days for your application to begin showing signs of leaks. Problem: by the time the application is ready for leak analysis, ten's of thousands malloced blocks are present in the heap. "Find Leaks" becomes slow because of the exhaustive nature of is Garbage Collection. "Show Heap" produces a window that has too many entries to analyze. Solution: Use a new heap or heaps. Implementation: start ZF with the -ZSquelch option. After your application is running and stable, click on "New Heap" to obtain another heap. Periodically obtain new heaps as needed to constrain malloc collection into managable units. It is best to do this after allowing your application sufficient time to begin exhibiting leak behavior. Disable the MessageFilter->Squelch option and begin analysis obtaining new heaps to collect malloc data that is associated with new user actions or new events. Select higher numbered heaps to perform automatic leak detection with "Find Leaks".

Summary: the focus of this release is to present new features that help with the data overload problem caused by the need to use ZF on long-running applications. Over a long time period, substantial quantities of memory errors and/or malloc'ed blocks may have accumulated hindering analysis and possibly overloading the GUI from a memory consumption perspective. Two features are introduced to manage data overloading from ZF's reported memory errors in the GUI. They are the command line options: -ZS and -ZD, also known as: -ZSquelch and
-ZDiscard.Filtered.Messages. It is now possible, with these options to start the GUI in a way that prevents automatic accumulation of error messages. These options are subsequently disabled by user action from the MessageFilter menu options in the GUI, when the user is prepared to begin analyzing incoming messages. The "Logical Heap" option is introduced to help focus leak related user actions in the GUI to malloc'ed blocks of interest. The feature is implemented via the "New Heap" button and the "Heaps" menu in the GUI and with the "New Heap" signaling method outside of the GUI.

 

© Copyright 2005 The ZeroFault Group, LLC. All rights reserved. All logos and trademarks are property of their respective owners.