Corbin Dunn and Louise Lovelle
Treehouse
Woodworking
About
Search

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.



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

Leave a Reply

Line and paragraph breaks automatic.
XHTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(c) 2008 Corbin Dunn

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

Entries (RSS) and Comments (RSS).

27 queries. 0.310 seconds.

Bad Behavior has blocked 513 access attempts in the last 7 days.