Reputation: 802
I am attempting to manually symbolicate a crash log since Xcode 7 will not do it for me. Yet, I come to this result:
What does this mean and what can I do with this? I have used atos as well and it just gives me the same address! I am sure I have the right dSYM, .app, and log as well.
Thanks!
Upvotes: 12
Views: 2446
Reputation: 836
To symbolicate a crash log, you require XCArchive. Inside the xcarchive, we are interested in two things:
The archive may have multiple dSYM and BCSymbolMap files if it has frameworks. We have to identify the correct BCSymbolMap file for the binary. For this, we need to extract the build UUID of the build using the dwarfdump tool.
dwarfdump --uuid MyApp,xcarchive/dSYMs/MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
output:
UUID: B63B409F-FA67-334C-BDC0-28AE2BFD488A (arm64) MyApp.xcarchive/dSYMs/MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
Resolve the obfuscated symbols in the dSYM file, using the dsymutil tool. Using the above symbol file:
dsymutil -symbol-map MyApp.xcarchive/MyApp.xcarchive/BCSymbolMaps/ B63B409F-FA67-334C-BDC0-28AE2BFD488A.bcsymbolmap MyApp.xcarchive/dSYMs/MyApp.app.dSYM
This command will symbolicate the dSYM file in-place. Now, if we open the crashlog in XCode, it will be able to resolve the symbols properly. Please note, XCode might need a minute to do this, so be patient. The symbols will appear automatically when it’s done.
If the crashlog was already opened in XCode before it was symbolicated, one might have to request re-symbolication from XCode. To do that, right-click on the crashlog in the device logs window and select Re-Smybolicate Log from the context menu.
Upvotes: 0
Reputation: 2144
When you see __hidden_ in crash log for function names, this means you enabled bitcode during ipa export from archive. In order to be able to symbolicate crash log you should use module map files from archive:
Here are the commands you need to run in terminal:
dsymutil --symbol-map PATH_TO_BCSYMBOLMAPS_DIR PATH_TO_DSYM
for all symbol map files. After this command you can use atos command as you have tried:
dwarfdump --arch YOUR_ARCH myApp.dSYM --lookup YOUR_LOOKUP_ADDRESS
Upvotes: 12