Monday, June 13, 2011

Reading and Translating a DWARF'd iOS Crash Dump

So what the heck does it mean when a crash log has the following lines?
Thread 0 name:  Dispatch queue:
Thread 0 Crashed:
0 libobjc.A.dylib 0x35167c98 0x35165000 + 11416
1 CoreFoundation 0x315b1cd6 0x315b0000 + 7382
2 CoreFoundation 0x316620b8 0x315b0000 + 729272
3 CoreFoundation 0x31663438 0x315b0000 + 734264
4 CoreFoundation 0x315b9f98 0x315b0000 + 40856
5 CoreFoundation 0x315c094e 0x315b0000 + 67918
6 Foundation 0x34e9831a 0x34e81000 + 95002
Chances are, your Released application has Debug symbols stripped (DWARF), but have no fear, the Developer tools come with the right script to help with this. It's called symbolicatecrash, and with Xcode 4+ it gets installed to:


I've simply create an alias in my bash resource on login, but you may prefer a symbolic link. Hopefully you've kept a copy of the build when it was released, because the dYSM file contains the right mojo to add the symbols back. The following sample translates the often cryptic lines of a .crash file into something more understandable:
symbolicatecrash MyOopsAppWithABadBug.crash
The options are more clearly defined by adding the -h switch:
symbolicatecrash  -h
Versions/A/Resources/symbolicatecrash [-Ah] [-o

Symbolicates a crashdump LOGFILE which may be "-" to refer to stdin. By default,
all heuristics will be employed in an attempt to symbolicate all addresses.
Additional symbol files can be found under specified directories.


-A Only symbolicate the application, not libraries
-o If specified, the symbolicated log will be written to OUTPUT_FILE (defaults to stdout)
-h Display this message
-v Verbose
Abracadabra! Those lines are easier to read now, but we have some work left to find the double-release or message sent to an object that is already evicted:
Thread 0 name:  Dispatch queue:
Thread 0 Crashed:
0 libobjc.A.dylib 0x34499c98 objc_msgSend + 16
1 CoreFoundation 0x308e3cd6 CFRetain + 62
2 CoreFoundation 0x309940b8 __CFBasicHashStandardRetainValue + 8
3 CoreFoundation 0x30995438 __CFBasicHashAddValue + 100
4 CoreFoundation 0x308ebf98 CFDictionarySetValue + 68
5 CoreFoundation 0x308f294e -[__NSCFDictionary setObject:forKey:] + 54
6 Foundation 0x341ca31a -[NSMutableDictionary(NSKeyValueCoding)setValue:forKey:] + 10
You can read more about the Debug and Symbolification process here:


  1. This is especially essential should you're 바카라사이트 planning on enjoying in} for actual cash. At OUSC, we frequently evaluation the newest actual cash on-line slot releases. Check out under the newest actual cash slots out there at high casino websites. Playing at on-line casino for actual cash is usually a|could be a} thrilling experience! At OUSC you will find probably the most trusted websites to play with money and one of the best actual cash video games.

  2. Except that stated win is normally lower than value of|the price of} the 4 plays it took to get it. At least you can to|you presumably can} gamble for an opportunity to get on the board. Do you attempt to maintain two red sevens after which 코인카지노 get killed at the first thriller square? It will likely only supply holds twice, and you missed out on two possible minor wins. Of course, should you DON'T maintain when supplied, it will taunt you by spinning in the third seven on purpose.

  3. This slot machine is so stunning wanting 1xbet I assume it is one of the few video games on this list that everybody ought to see. To access the demo version and get 2,000 free credits to spin the reels, use the internal search to seek out|to search out} it and click on} on the green 'Play Game' button. The Age of the God slots are a lot more complex the old bar-and-bells traditional Slots that it is onerous to think about they each fall into the identical category. The best web site to play Big Time Gaming Slot machines is partycasino, so that's the place {you ought to be|you must be|you ought to be} headed if you want like|if you'd like} your video games to get muy picante!.