+1  A: 

Just add the line:

UINavigationController* navController = self.navigationController;

And then set a breakpoint, or whatever else you want to do.

Shaggy Frog
A: 

You could always just do something like (self.navigationController == nil).

Alexsander Akers
+2  A: 

The reason is because navigationController is a property, so you can't just examine it; you would have to send the property's owner a getter message. In the debugger, that's pretty expensive, especially if it crashes or otherwise fails, plus it could always have side effects (e.g., faulting in a Core Data object, lazy-loading something, or changing some state in another ivar), so the debugger will not do this casually.

You must explicitly request the message using the Debugger Console:

po [self navigationController]

(I don't know whether it will let you use property-access syntax there. There's no difference between them, which is the root of the problem: A property access is an Objective-C message, which, as I described above, is why the debugger won't do one unless you specifically tell it to.)

Peter Hosey