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../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.

 

Debugging OpenGL Frames

When debugging an OpenGL frame, the debug navigator shows the OpenGL call trace that generated the captured frame. The call trace includes the stack frame for each OpenGL call.

../art/debug_navigator-opengl_debugging_2x.png../art/debug_navigator-opengl_debugging_2x.png

The debug navigator contains the OpenGL call trace and a filter bar.

With the filter bar (the bottom box on the left in the screenshot) you specify the OpenGL calls and stack frames you want to see.

  • Call filter: Shows only markers and OpenGL draw calls.

  • Call stack slider: Shows stack frames, from only the most relevant to all of them.