views:

392

answers:

1

I'm trying to use symbolicatecrash, and having interesting results. A coworker built our distribution build on another machine, so he sent me the dSYM file. After running the symbolicatecrash file found in

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

it fills in all the Apple functions but not mine. The problem appears to be that it can't (or won't) locate the dSYM file, potentially because it has my coworker's machine information in it. When I copy the hex address from the crash report I can use dwarfdump like this:

dwarfdump --lookup 0x0001f892 --arch armv6 path/to/MyApp.app.dSYM

It gives me the line number of that single call correctly. In addition, symbolicatecrash is able to work out the game's line numbers from our code, but not Apple's. I don't know why he can't see Apple's stuff, but all this leads me to believe that the problem is with finding the dSYM, as mentioned previously.

So. Is there any way to just pass the dSYM's path into the symbolicatecrash command, or some other way of making it work? Because, seriously, it's completely dumb to make a tool that does some sort of magic "search" for your file, only to not find it because it doesn't want to.

Also, any idea why my coworker's build won't show any of Apple's functions? And while I'm here, what does the "+" mean in the crash file? Like this:

0x00059f8c -[UIWindow sendEvent:] + 108

+2  A: 

symbolicatecrash is one giant hack, the best you can do is learn to do things exactly as it expects from you. Or read it's internals and fix it, but then you would have to re-fix it for the next SDK update...

In this case I think your problem is that you did not place dSYM file in the same folder as the app bundle. It has to be exactly like XCode left it, and it should be in a location where spotlight will find it. Additionally, make sure the names are exactly as expected - exact casing of "dSYM" is important, and I heard that no dots are supported in the app name due to a bug.

When in doubt always try the -v option to get more detailed error messaged.

There is no line number information for Apple binaries, personally I am super happy to get at least the function names. Could have been worse.

In "-[UIWindow sendEvent:] + 108" means 108 bytes from the start of the function. The only useful interpretation of this data is that if number is small it's probably accurate, if the number is big your symbolication is out of whack.

DenNukem