Dan Wood: The Eponymous Weblog (Archives)

Dan Wood Dan Wood is co-owner of Karelia Software, creating programs for the Macintosh computer. He is the father of two kids, lives in the Bay Area of California USA, and prefers bicycles to cars. This site is his older weblog, which mostly covers geeky topics like Macs and Mac Programming. Go visit the current blog here.

Useful Tidbits and Egotistical Musings from Dan Wood

Categories: Business · Mac OS X · Cocoa Programming · General · All Categories

Fri, 22 Dec 2006

Things that make it hard to debug

I'm going to channel Andy Rooney for this post. The difference is, you as a reader get to comment, so if I've been living in my debugging cave for so long that I've failed to learn the appropriate debugging techniques, feel free to enlighten me!

Gripe #1: For some reason, Apple's crash catcher isn't noticing crashes in the app I'm working on, if I launch it normally (without XCode). If you don't get the "unexpectedly quit" dialog, then you don't get a crash report. And yet other applications get the crash report and log just fine — Safari crashed on me yesterday and I got the dialog and the log.

Gripe #2:Some crash logs come back with an application version of '???'. They must be launched improperly so that the info.plist is not readable. It's hard to know what version I'm examining in that case!

Gripe #3:Exceptions that were helpfully caught for me without giving me enough context information are really annoying. for instance, check out this thing in a log:

*** NSRunLoop ignoring exception '*** -[NSCFDictionary setObject:
forKey:]: attempt to insert nil value' that raised during posting of
delayed perform with target 181d2ce0 and selector 'processTasks'

.... or ...

Exception raised during posting of notification.  Ignored.  exception:
*** -[NSCFDictionary setHidden:]: selector not recognized
[self = 0x6b95f90]

Yeah, I see that it's somewhere downstream from my method 'processTasks'. But I don't know the dictionary or where it got set.

Gripe #4:Sometimes, symbols in a backtrace are returned to us, and when we look them up on our symbols build with atos, the resulting strings make absolutely no sense. Sometimes.

OK, I'm done griping for now. Back to happy, shiny thoughts of Christmas cheer!