OmniObjectAlloc reads the PB.project files that are created and maintained by ProjectBuilder. In order to use OmniObjectAlloc, you need to build your project and setup some basic configuration information in the project. For the purposes of this documentation, we will assume that you are using the example application that comes with OmniObjectAlloc. To get access to this example code, start OOA and select 'Example Code ...' under the Apple menu. This will open a folder in the Finder containing the sample code. To avoid destroying the original copy of this code, you should copy the contents of this folder to another location (/tmp for example).
Now, open the copy of the PB.project in the sample code in ProjectBuilder. Build the application by clicking on the Build Panel button from the toolbar and then clicking on the Build button on the Build Panel. If you are building on OpenStep 4.2/Mach, you will need to comment out the '#define RHAPSODY' line in OOAInternalRefCountExample.m. Under Rhapsody you should not need to make any changes.
Once you have successfully compiled the application, click on the Laucher/Debugger button on the ProjectBuilder toolbar. Then click on the Launch Options button. The presented panel will allow you to specify the path(s) to the executable to launch when debugging this project. There may be entries present already that are in italics indicating that ProjectBuilder has noticed these executables laying around in the source directory of the project. OOA will not currently use these implicit paths instead requiring you to specify an explicit launch path. Click on 'Add...' and select the path to the executable (this should be /tmp/OOAExample/OOAExample.app/OOAExample).
Now you are ready to use OmniObjectAlloc on this project for the first time. Select File->Open and choose the PB.project from the OOAExample source directory. If all has gone well, you will be presented with a panel like the following (sans data). If not, go back through the previous steps to check your work.
This panel contains an overview of the information that OmniObjectAlloc collects about the application. To start collecting information, press the 'Start' button located in the upper-right corner of the document window.
The top pane in the window shows information about the launch of the application and output from the application itself as it runs.
The middle pane displays a list of the classes in the application and summary allocation statisics about each of these classes. The information in this table may be sorted by selecting a column in the popup or by clicking on a column heading. The plus/minus button above the scroller on the class table allow you to customize the columns that are displayed in the table.
The bottom pan contains detail information about the selected class in the middle pane. The left most table contains a list of the hexidecimal addresses of all currently allocated instances of the selected class. If the 'Forget Deallocated Objects' checkbox is not checked, this table will also display addresses for objects that have been deallocated while this setting is in effect. Deallocated objects are displayed in red. When an object is deallocated, the memory that was previously occupied by that object may be reused. Deallocated object entries therefore also display a version number.
When an object entry is selected, the middle table will display a list of allocation events associated with that object. These coorespond to roughly to allocation of the object, retain, release and autorelease and finally deallocation.
Finally, when an allocation event is selected, a symbolic stack trace is displayed in the right-most table. A file icon will be display in any frames for which debugging information is available. Clicking on the icon will attempt to open the source in ProjectBuilder. In order for this to work, you will need to add the source directory to the 'Directories' entry in the Launch Options panel previously used to set the launch path.