在搜索了整个互联网以找到一种方式来表示我从Apple收到的崩溃日志后,我终于想出了如何在终端中使用atos命令来表示崩溃日志。我将dSYM文件,.app文件和崩溃日志放在同一个文件夹中,使用atos -arch armv7 -o APPNAME
我已经能够输入内存地址,有时(但很少)会出现一个方法名称。说实话,我对终端或崩溃日志没有多少经验。不幸的是,试图用Xcode的组织者来表示崩溃日志完全没有做到,并且尝试在Xcode的包内容中使用symbolicatecrash
文件也失败了。所以我在这里,留下了我所知道的唯一其他选择。
现在,我的问题是:如何制作这些内存地址的正面或尾部?我必须输入哪些地址才能到达应用程序崩溃的位置?我90%的方式在那里,我只是不知道哪些地址会给我有价值的信息或哪些是无用的。这里附有一张崩溃日志图片:
非常感谢任何帮助。
答案 0 :(得分:12)
我的猜测是你看到了Stackoverflow问题及其中的atos信息(就像我做的那样),但是没有正确计算地址以放入atos。见这里:
iOS crash reports: atos not working as expected
符号地址=幻灯片+堆栈地址 - 加载地址
使用otool获取幻灯片地址(通常为0x001000)
otool -arch ARCHITECTURE -l "APP_BUNDLE/APP_EXECUTABLE" | grep -B 3 -A 8 -m 2 "__TEXT"
滚动到崩溃日志的底部,从二进制图像部分(二进制图像下的列表中的第一个地址)获取堆栈地址。
然后使用Mac附带的HEX计算器添加它(使用程序员视图)。最后从崩溃日志中的堆栈跟踪中减去加载地址(在您的情况下,它看起来像0x00012efe)。
将其放入atos以获取导致崩溃的行:
atos -arch armv7 -o YOURAPP.app'/'yourapp' 0xADDRESSFROMABOVE
答案 1 :(得分:0)
您可以尝试使用我的脚本来实现此目的: https://github.com/IdoTene/MacosSymbolicateCrash/blob/master/symbolicate.py
它封装了 atos 命令