我有来自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
有关为何可能发生这种情况的任何建议?我没有从应用程序中删除调试符号。
答案 0 :(得分:92)
要从归档应用的dSYM文件中正确获取符号,并从BugSense崩溃报告(或任何其他崩溃报告)中获取有用信息:
atos
查找引用所必需的,并用符号表示堆栈跟踪。~/Library/Developer/XCode/Archives/YYYY-MM-DD/
dSYMs
文件夹MyApp.app.dSYM
,您可能会认为,这是我应该运行atos
的文件!这是不正确的。 实际上是另一个包! cd
到这个包中,进入文件夹:MyApp.app.dSYM/Contents/Resources/DWARF
,你会发现另一个简称为MyApp
的文件。这是实际的dSYM文件。atos -arch armv7 -o MyApp 0x0000000
(或任何内存地址)以查找错误的位置,或只需atos -arch armv7 -o MyApp
即可进入交互模式。答案 1 :(得分:3)
你必须得到正确的地址。您可以使用上面的解决方案,但必须使用十六进制数学来获得正确的内存地址。 slide + stack address - 加载地址。