Create a gist now

Instantly share code, notes, and snippets.

anonymous /gist:cdb5ba3791cfd7d312c2 Secret
Created Mar 17, 2016

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
triage commented Apr 18, 2016

THANK YOU

@chebur
chebur commented Jun 16, 2016

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

@matsoft90

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