我尝试使用“atos”命令行实用程序从.crash文件中查找方法名称,但是获取了错误的方法名称。例如:崩溃日志说异常是由于发送消息到UIComponent无法识别的选择器发送到激烈但在符号化“atos”后显示网络相关类中的方法。
正如iOS crash reports: atos not working as expected所建议的那样https://developer.apple.com/library/mac/qa/qa1765/_index.html在我的情况下尝试查看“Slide& LoadAddress”,这些都是相同的(幻灯片:0x4000 LoadAdress:0x4000)。
我还验证了我正在使用的.iPA文件是正确的,如下所示:http://www.filedropper.com/symbolicate。
我不确定哪里出错了。任何人都可能遇到同样的问题吗?请建议任何其他方法。
我有.iPA文件和.crash文件,需要找出正确的方法名称。
以下是完整的崩溃报告:
{{3}}
找出.iPA的命令是正确的:
dwarfdump --uuid Example.app/Example
找出方法名称的命令:
atos -arch armv7 -o Example.app/Example -l 0x4000 0x7f68bb0 0x3017d000 + 84904
这是在网络类中给出一个我没有任何UIComponent的方法。
如果您需要更多详细信息,请与我们联系。
由于 希瓦。
答案 0 :(得分:1)
有很多事情:
Last Exception Backtrace
。main.m
调用和线程0的第2帧中未捕获的异常处理程序[TODO]
文本标识)编写,或者您正在使用另一台服务器进行未捕获的异常。因此,崩溃报告对您没有帮助。atos
与应用dSYM一起使用而不是应用二进制文件。使用应用程序二进制文件永远不会显示文件名或行号,如果您不从可执行文件中删除符号,则只显示类名和方法。但是你应该从可执行文件中删除它们以保持二进制文件尽可能低(节省30-50%)。您拨打atos
的方式是错误的。 0x7f68bb0 0x3017d000 + 84904
不是有效选项,事实上您的崩溃报告甚至不包含该选项。相反,您只需要在每帧二进制名称后面使用第一个地址。所以对于以下行:
2 Example 0x001ffe3b 0x4000 + 2080315
您可以按如下方式使用atos:
`atos -arch -armv7 -l 0x4000 -o Example.app.dSYM 0x001ffe3b`
您应该更新崩溃报告SDK以使用最新的PLCrashReporter版本,并确保在报告中正确显示异常。