如何手动symbolicate崩溃日志,ATOS(How to manually symbolica

2019-07-17 11:07发布

搜索所有在互联网上找到一个方法来symbolicate我从苹果公司收到了我的崩溃日志后,我终于想通了如何使用ATOS命令终端symbolicate的崩溃日志。 我有文件的dSYM,.app文件,并在同一个文件夹的崩溃日志,并利用atos -arch armv7 -o APPNAME我已经能够进入内存地址,有时(但相当罕见)的方法的名字已经拿出。 坦白说,我没有与终端,或崩溃日志太多经验。 试图从symbolicate Xcode的组织者的崩溃日志已经不幸放任不管,并尝试使用symbolicatecrash Xcode的包装内容中的文件也失败了。 所以我在这里,留下了我所知道的唯一的选择。

现在,我的问题是这样的:一个人如何去制造这些内存地址的正面还是反面? 这解决了我必须进入到该点到达该应用程序崩溃? 我是那里的路90%,我只是不知道哪些地址给我有价值的信息或者是无用的。 以下附件是一个崩溃日志的图片:

任何帮助是极大的赞赏。

Answer 1:

我的猜测是,你看到了它的ATOS信息的问题#1(像我一样),但不能正确计算地址投入ATOS。 看这里:

iOS的崩溃报告:ATOS无法按预期工作

符号地址=幻灯片+堆栈地址 - 加载地址

使用otool让你的幻灯片地址(通常0x001000)

otool -arch ARCHITECTURE -l "APP_BUNDLE/APP_EXECUTABLE" | grep -B 3 -A 8 -m 2 "__TEXT"

滚动到你的崩溃日志的底部,从二进制映像节(下二进制图像列表中第一个地址),让您的堆栈地址。

然后使用随您的Mac(使用编程器视图)的十六进制计算器添加它。 最后减去从堆栈跟踪您的加载地址在你的崩溃日志(在你的情况下,它看起来像0x00012efe)。

把这个ATOS拿到导致崩溃的行:

atos -arch armv7 -o YOURAPP.app'/'yourapp' 0xADDRESSFROMABOVE


Answer 2:

你可以尝试使用我的脚本来实现这一目标: https://github.com/IdoTene/MacosSymbolicateCrash/blob/master/symbolicate.py

它封装了ATOS命令



文章来源: How to manually symbolicate a crash log with atos