Thursday, September 26, 2013

About the Debug Navigator

The debug navigator displays the call stacks of your paused app. With this navigator you can debug C-based code and OpenGL frames.
Selecting an item in the debug navigator causes information about the item to be displayed in the editor area and in the debug area.

Debugging C-based Code
When debugging C-based code, the navigator groups the stack frames by threads or queues, and lists the memory locations you’re interested in. Use the debug navigator to navigate the stack frames of your app’s threads, and to manage viewed memory locations for the current debugging session.
The debug navigator opens automatically whenever you pause your application (by choosing Debug > Pause), or it hits a breakpoint. (You can change that behavior in Alerts preferences.)
../art/debug_navigator-c_debugging_2x.png
Threads indicate their running state with a status icon:
  • No icon means the thread is running normally.
  • A yellow status icon means that the thread is blocked and waiting on a lock or condition.
  • A red status icon means that you suspended the thread. A suspended thread does not execute code when you resume your application.
The debug navigator contains debug gauges, a scope selector, the thread and memory location list, and a filter bar.
With the debug gauges, you can see how your app is consuming cpu power, memory, and other attributes as it runs.
With the scope selector you indicate how the navigator displays threads:
  • By Thread: Displays threads as a flat list.
  • By Queue: Groups threads under the dispatch queue that created them.
With the filter bar you specify the threads and stack frames you want to see.
  • Thread filter: Shows only relevant threads.
  • Call stack slider: Shows stack frames, from only the most relevant to all of them.
To remove a memory location from the list, select it and press Delete.
If you are debugging multiple processes from the same workspace, each process is listed separately in the debug navigator with its threads grouped underneath it. Multiple process debugging is a useful way to debug the interactions between client and server processes.

No comments:

Post a Comment