Atos无法从归档应用程序的dSYM获取符号

时间:2011-10-06 14:34:03

标签: ios xcode crash symbolicatecrash

我有来自BugSense的崩溃报告,所以我有关于崩溃的内存位置的信息,但它们没有象征性。此外,Bug Sense不会发送传统的崩溃报告,但仍会给我一个bug跟踪。因此,我尝试使用Atos来获取崩溃的确切位置。我已经在XCode 4中存档了应用程序并使用该版本提交到应用程序商店,因此我有一个dSYM文件。我运行了以下代码:

atos -arch armv7 -o MyApp.app.dSYM 0x001057e9

但是,我没有收到正确的输出,而是收到错误:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7

有关为何可能发生这种情况的任何建议?我没有从应用程序中删除调试符号。

2 个答案:

答案 0 :(得分:92)

要从归档应用的dSYM文件中正确获取符号,并从BugSense崩溃报告(或任何其他崩溃报告)中获取有用信息:

  1. 将堆栈跟踪从BugSense复制到TextEdit或任何其他文本编辑器。确保使用“剪贴板”图标,而不是简单地复制文本。否则,您将无法获得堆栈跟踪的实际内存位置,这些位置是使用atos查找引用所必需的,并用符号表示堆栈跟踪。
  2. 打开XCode并转到管理器
  3. 找到您的存档并右键单击它,然后在取景器中打开它。
  4. 导航到档案目录,通常是~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  5. 进入特定存档,然后进入dSYMs文件夹
  6. 您会看到文件MyApp.app.dSYM,您可能会认为,这是我应该运行atos的文件!这是不正确的。 实际上是另一个包! cd到这个包中,进入文件夹:MyApp.app.dSYM/Contents/Resources/DWARF,你会发现另一个简称为MyApp的文件。这是实际的dSYM文件。
  7. 运行atos -arch armv7 -o MyApp 0x0000000(或任何内存地址)以查找错误的位置,或只需atos -arch armv7 -o MyApp即可进入交互模式。

答案 1 :(得分:3)

你必须得到正确的地址。您可以使用上面的解决方案,但必须使用十六进制数学来获得正确的内存地址。 slide + stack address - 加载地址。