Atos cannot get symbols from dSYM of archived application
I have a crash report from BugSense, so I have information on the memory location of crashes but they are not symbolicated. Also Bug Sense does not send traditional crash reports but still gives me a bugtrace. So I am trying to use Atos to get the exact location of my crashes. I have archived the app in XCode 4 and used that version to submit to the app store, so I have a dSYM file. I have run the following code:
atos -arch armv7 -o MyApp.app.dSYM 0x001057e9
However, instead of getting the proper output, I am receiving an error:
atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7
Any suggestions as to why this might be happening? I am not stripping debug symbols from the app.
Solution 1:
To properly get symbols from your archived app's dSYM file and get useful information from your BugSense crash reports (or any other crash reports for that matter):
- Copy the stack trace from BugSense into TextEdit or any other text editor. Make sure to use the "clipboard" icon, rather than simply copying the text. Otherwise you will not get the actual memory locations of the stack trace, which are necessary to look up the references using
atos
and symbolicate your stack trace. - Open XCode and go to the Organizer
- Find your archive and right-click it, go to open it in the finder.
- Navigate to the directory of the archive, usually
~/Library/Developer/XCode/Archives/YYYY-MM-DD/
- Go into the specific archive, and then the
dSYMs
folder - You will see the file
MyApp.app.dSYM
and you may think, this is the file that I should runatos
against! This is incorrect. It is actually another package!cd
into this package, into the folder:MyApp.app.dSYM/Contents/Resources/DWARF
and you will find another file simply calledMyApp
. This is the actual dSYM file. - Run
atos -arch armv7 -o MyApp 0x0000000
(or whatever the memory address is) to find the location of your error, or simplyatos -arch armv7 -o MyApp
to enter interactive mode.
Solution 2:
You have to get the right address. You can use the solution above but you must use hex math to get the right memory address. slide + stack address - load address.