Corbin's Treehouse - Corbin Dunn, Santa Cruz, CA
Plug Bug

Your most important breakpoint in Cocoa

…..drumroll please…and it is…is: objc_exception_throw. You should always have this breakpoint setup in any Cocoa or Cocoa Touch app that you are building.

How do you do it? In Xcode, Run -> Show -> Breakpoints and double click on a new breakpoint. Type it in, ie:

Picture 3 objc exception throw.png

Exceptions in cocoa are, well, exceptional. If your app is throwing them, then you should fix them.

6 Responses to “Your most important breakpoint in Cocoa”

  1. Jon H says:

    I always break on raise, but there are instances where that doesn’t quite work and this might be better. Thanks!

  2. corbin says:

    Yes — breaking on -raise (or, specifically, -[NSException raise]) worked great in Tiger, but would sometimes miss a few exceptoins. In Leopard or higher it won’t get hit at all, and objc_exception_throw is the single funnel point for all exceptions. Ideally, this should be a default breakpoint places in all project templates.

  3. Jon H says:

    “In Leopard or higher it won’t get hit at all”

    Huh. Why is that? Why the change?

    This is good to know! Thanks.

  4. corbin says:

    Basically, before there may have been multiple ways an exception could be thrown. I don’t know the exact details. The thing to understand now is that there is a single funnel point for them all, which makes breaking on any exception much easier!

  5. Jon H says:

    Okay, cool. I’ve been using break on [NSException raise] since EOF on NeXTSTEP 3.2, so I was wondering what the change was.

  6. wooden joints says:

    It’s actually a nice and helpful piece of info. I’m satisfied that you shared this useful info with us. Please stay us up to date like this. Thanks for sharing.

(c) 2008-2017 Corbin Dunn

Corbin's Treehouse is powered by WordPress. Made on a Mac.

Subscribe to RSS feeds for entries and comments.

39 queries. 0.413 seconds.