7

在整个互联网上搜索以找到一种方法来符号化我从 Apple 收到的崩溃日志后,我终于想出了如何在终端中使用 atos 命令来符号化崩溃日志。我在同一个文件夹中有 dSYM 文件、.app 文件和崩溃日志,并且使用atos -arch armv7 -o APPNAME我已经能够输入内存地址,有时(但很少)会出现方法名称。老实说,我对终端或崩溃日志没有太多经验。不幸的是,尝试从 Xcode 的管理器中符号化崩溃日志并没有做任何事情,并且尝试symbolicatecrash在 Xcode 的包内容中使用该文件也失败了。所以我在这里,留下了我所知道的唯一其他选择。

现在,我的问题是:如何对这些内存地址进行正面或反面?我必须输入哪些地址才能到达应用程序崩溃的地方?我已经完成了 90%,我只是不知道哪些地址会给我有价值的信息,哪些是无用的。这里附上一张崩溃日志的图片:

在此处输入图像描述

任何帮助是极大的赞赏。

4

2 回答 2

12

我的猜测是您看到了 Stackoverflow 问题,其中包含 atos 信息(就像我所做的那样),但没有正确计算地址以放入 atos。看这里:

iOS 崩溃报告:atos 未按预期工作

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

使用 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
于 2013-01-08T19:26:28.050 回答
1

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

它封装了atos命令

或更新版本:https ://github.com/samrayner/MacosSymbolicateCrash/blob/master/symbolicate.py 。

于 2018-02-11T09:06:52.180 回答