Running Your Application with Diagnostics
During the test and debug phases of your product development, configure a scheme to run your application with various memory management diagnostics and logging options enabled. Schemes have a Run action with a Diagnostics pane that allows you to choose from a selection of runtime diagnostic tools.
From the Scheme toolbar menu, choose a scheme.
From the same menu, choose Edit Scheme to display the scheme dialog.
In the left column, select Run.
To specify runtime diagnostics, click the Diagnostics tab.
Click the Run button or choose Product > Run.
Select the tools that you want Xcode to use. You can view output from these tools in the debug area console and in the debug log in the log navigator.
Memory Management options:
Enable Scribble. Fill allocated memory with
0xAAand deallocated memory with
Enable Guard Edges. Add guard pages before and after large allocations.
Enable Guard Malloc. Use
libgmallocto catch common memory problems such as buffer overruns and use-after-free.
Enable Zombie Objects. Replace deallocated objects with a “zombie” object that traps any attempt to use it. When you send a message to a zombie object, the runtime logs an error and crashes. You can look at the backtrace to see the chain of calls that triggered the zombie detector.
Distributed Objects. Enable logging for distributed objects (
Garbage Collection Activity. Enable various logging facilities in the garbage-collected memory allocator. Log when a collection occurs, log when new regions are allocated, and log all weak reference manipulations.
Malloc Stack. Record stack logs for memory allocations and deallocations.
Log Exceptions. Log Objective-C runtime exception handling.
Log DYLD API Usage. Log dynamic-linker API calls (for example,
Log Library Loads. Log dynamic-linker library loads.
Stop on Debugger() and DebugStr(). Enable Core Services routines that enter the debugger with a message. These routines send a SIGINT signal to the current process.