2

i have these crash logs and after i drop them in the organizer the get symbolicated automatically but the result is always the same. the iOS calls get symbolicated and my app calls don't.

I tried copying the dysm and app file into the same folder, deleting and copying back again. nothing helped.

Any idea whats going on ? So I am getting something like this:

    Last Exception Backtrace:
0   CoreFoundation                  0x36d4088f __exceptionPreprocess + 163
1   libobjc.A.dylib                 0x31071259 objc_exception_throw + 33
2   CoreData                        0x350337ab -[NSPersistentStoreCoordinator removePersistentStore:error:] + 227
3   MyApp                           0x00139fbb 0x2e000 + 1097659
4   MyApp                           0x0013998d 0x2e000 + 1096077
5   MyApp                           0x00139a5d 0x2e000 + 1096285
6   libdispatch.dylib               0x3171d61f dispatch_once_f$VARIANT$mp + 47
7   MyApp                           0x001399ff 0x2e000 + 1096191
8   MyApp                           0x00139b47 0x2e000 + 1096519
9   MyApp                           0x0008915d 0x2e000 + 373085
10  MyApp                           0x0008a11b 0x2e000 + 377115
11  UIKit                           0x36ffbd3d -[UIViewController _setViewAppearState:isAnimating:] + 145
12  UIKit                           0x36ffeaa3 -[UINavigationController _startTransition:fromViewController:toViewController:] + 815
13  UIKit                           0x36ffe6ab -[UINavigationController _startDeferredTransitionIfNeeded] + 251
14  UIKit                           0x36ffe56b -[UILayoutContainerView layoutSubviews] + 179
15  UIKit                           0x36fbd0bd -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 149

you can see that the UIKit functions got symbolicated but not MyApp

Edward Ashak
  • 2,411
  • 2
  • 23
  • 38

1 Answers1

7

You need the dSYM file and the app binary of the exact build that generated the crash report. Usually you get this result in Xcode if the dSYM wasn't found using the symbolication script via spotlight. If this is from a debug build, and you created a new build in the meantime, you are out of luck. Otherwise make sure the directory where the debug build is stored to, is indexed by Spotlight. If this is from a build that is archived, make sure the archived directory is indexed by Spotlight.

The crash report contains a section title "Binary Images", and on the top of that your app binary is referenced with the binaries UUID. It looks like c42a118d722d2625f2357463535854fd, which needs to be changed to uppercase and the format 8-4-4-4-12 and will then look like this: C42A118D-722D-2625-F235-7463535854FD.

You can use that to search the dSYM via spotlight in a terminal via:

mdfind "com_apple_xcode_dsym_uuids == C42A118D-722D-2625-F235-7463535854FD"

Kerni
  • 15,241
  • 5
  • 36
  • 57
  • Hi Kerni, I have the .dSym and .app files and I tried symbolicatecrash from Xcode as well from the command line but no luck. I checked out the version from git repo to work on it and also we saved the .dSym and .app files when we submit the app. when i run mdfind it returns nothing back. I am still trying to figure out how to symbolicate, any ideas on where to head next ? – Edward Ashak May 29 '12 at 12:46
  • the mdfind gave me the idea to do mdlist on the myApp.app.dSym file and its showing a different uuid. that must be the problem, a miss match between the crash and the dSym file, does that make sense ? – Edward Ashak May 29 '12 at 12:51
  • 1
    The crash report will always show the UUID of the app binary. So if you have the app binary with that UUID and the dSYM that you saved has a different UUID, then the build process didn't generate the dSYM (check timestamps e.g.?) or it was overwritten later. You can use `dwarfdump --uuid myApp.app/myApp` for the app binary and `dwarfdump --uuid myApp.app.dSYM` on the dSym package to get the UUIDs of those to compare them. – Kerni May 29 '12 at 13:33
  • Hi Kerni, I've been checking out the code revisions that we sent up to the store and building again to generate the dSym and app files but no luck. Is there any way to reverse the UUID to something else Or is that a one way conversion ? – Edward Ashak May 29 '12 at 16:01
  • Every time you run the build process, the binary will be unique, getting a new UUID. So there is no way to reverse that. What you could try is change the UUID in the crash report to be identical to the new builds UUID (lowercase and no - chars) and see if you get some useful result. It could be rather luck if this works, it's not meant to be done. Make sure to use the archive feature for appstore and beta builds in the future so you have everything available. – Kerni May 29 '12 at 16:14
  • okay, that makes sense now. So i can just adjust the uuid in the crash log to test the dSym. Thank you so much Kerni. – Edward Ashak May 29 '12 at 16:32
  • Kerni, The switch of the uuid in the Binary Images worked perfectly :) Thank you so much. – Edward Ashak May 29 '12 at 16:46