Skip to content

Instantly share code, notes, and snippets.

Created March 17, 2016 04:23
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/cdb5ba3791cfd7d312c2 to your computer and use it in GitHub Desktop.
Save anonymous/cdb5ba3791cfd7d312c2 to your computer and use it in GitHub Desktop.
Symbolicating bitcode compiled iOS apps
Just thought I'd reply to myself since I wasted close to a week figuring this out. It looks like bitcode is basically just compiling an armv7 and arm64 version of the code you submit, but the UUIDs on the objects from user crashes don't match the UUIDs from dSYMs. You can symbolicate a crash by doing the following:
1. In Organizer under 'Archives' click 'Download dSYMs...' for the relevant build.
2. Run this command against the actual binary/framework you want to symbolicate (replace arm64 with armv7 if not a 64 bit build crash):
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool -arch arm64 -l '/Users/blah/Library/Developer/Xcode/Archives/2016-03-03/PRODUCT 3-3-16, 4.43 PM.xcarchive/Products/Applications/PRODUCT.app/PRODUCT'
Look for:
Load command 9
cmd LC_UUID
cmdsize 24
uuid D73721E6-F521-36C8-ABFF-AAE15EEDD60D
Turn that uuid string into a lowercase string without -'s:
d73721e6f52136c8abffaae15eedd60d
3: Open your .crash in a text editor and look for:
Binary Images:
0x100058000 - 0x10036ffff PRODUCT arm64 <8c84e74d19b1313ca77ff8cef337beb9> /var/mobile/Containers/Bundle/Application/10513186-CB5C-4896-AEE9-61436934C882/PRODUCT.app/PRODUCT
Change '8c84e74d19b1313ca77ff8cef337beb9' to the value from before, i.e., 'd73721e6f52136c8abffaae15eedd60d'.
Save the .crash.
Run symbolicatecrash on it. It should work.
The end.
Unfortunately the Xcode 'Crashes' tab is completely broken with Bitcode turned on. I don't know if this is fixed for 7.3/9.3, but it's probably too late.
@triage
Copy link

triage commented Apr 18, 2016

THANK YOU

@nesterenkodm
Copy link

Thanks for the gist. Didn't fixed in Xcode 8.

Anyway, I've made a tool to automate the process. Hope it helps someone.
https://github.com/chebur/Symbolicator

@tahirmt
Copy link

tahirmt commented Mar 16, 2017

I always get "/usr/bin/otool: internal objdump command failed" What can I do?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment