Atos cannot get symbols from dSYM of archived application

匿名 (未验证) 提交于 2019-12-03 08:57:35

问题:

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.

回答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):

  1. 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.
  2. Open XCode and go to the Organizer
  3. Find your archive and right-click it, go to open it in the finder.
  4. Navigate to the directory of the archive, usually ~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  5. Go into the specific archive, and then the dSYMs folder
  6. You will see the file MyApp.app.dSYM and you may think, this is the file that I should run atos 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 called MyApp. This is the actual dSYM file.
  7. Run atos -arch armv7 -o MyApp 0x0000000 (or whatever the memory address is) to find the location of your error, or simply atos -arch armv7 -o MyApp to enter interactive mode.


回答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.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!