37

我有一份来自BugSense的崩溃报告,所以我有关于崩溃的内存位置的信息,但它们没有被符号化。此外,Bug Sense 不会发送传统的崩溃报告,但仍然给我一个 bugtrace。所以我正在尝试使用 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

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

4

2 回答 2

106

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

  1. 将堆栈跟踪从 BugSense 复制到 TextEdit 或任何其他文本编辑器。确保使用“剪贴板”图标,而不是简单地复制文本。否则,您将无法获得堆栈跟踪的实际内存位置,这是使用堆栈跟踪查找引用atos和符号化堆栈跟踪所必需的。
  2. 打开 XCode 并转到 Organizer
  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进入交互模式。
于 2011-10-07T21:19:40.770 回答
4

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

于 2013-02-22T16:32:16.040 回答