OS X 崩溃日志符号化

Posted

技术标签:

【中文标题】OS X 崩溃日志符号化【英文标题】:OS X Crash Log Symbolication 【发布时间】:2013-07-05 18:45:22 【问题描述】:

我无法使用 XCode 4.6 表示来自测试人员和用户的 OS X(不是 ios)崩溃日志。无法将崩溃日志拖入管理器,并且管理器不会显示 ~/Library/Logs/DiagnosticReports/ 中的任何崩溃日志,尽管该目录中有一些日志。

Didier Malenfant 评论了之前的帖子XCode not importing OS X crash log

底线很简单。截至目前(Xcode 4.6),OS X 崩溃日志无法导入 Xcode。仅限 iOS。

这是目前的情况吗?如果没有有效的方法来解释崩溃报告,很难想象组织能够支持新的 OS X 软件。

【问题讨论】:

见***.com/questions/6085734/… 谢谢。但是你引用的答案比我上面引用的答案早一年多,这与它相矛盾。您是否经常在 xcode 4.6 中符号化用户提交的登录? 【参考方案1】:

如果您有堆栈跟踪;例如:

0   com.your_app        0x00000001016191e0 0x1015fb000 + 123360
1   com.your_app        0x000000010161509d 0x1015fb000 + 106653
2   com.your_app        0x00000001016147b9 0x1015fb000 + 104377
3   com.your_app        0x000000010161df81 0x1015fb000 + 143233`

尝试以下方法:

atos -o YOUR_APP.app.dSYM/Contents/Resources/DWARF/YOUR_APP -l 0x1015fb000 0x00000001016191e0 0x000000010161509d 0x00000001016147b9 0x000000010161df81`

【讨论】:

【参考方案2】:

您可以使用 GDB 进行符号化,将您的发布版本和 .dSYM 文件放在同一目录中 打开终端

$ cd directory
$ gdb MyApp.app
(gdb) info line *0x00085f3c  

或者您可以按照***foe 的建议使用atos

$cd directory
$atos -o MyApp.app/Contents/MacOS/MyApp
info 0x00085f3c

$ cd directory
$ lldb MyApp.app
(lldb) image lookup -v --address 0x1ec4

【讨论】:

atos: developer.apple.com/library/mac/documentation/Darwin/Reference/… lldb :) image lookup -v --address 0x1ec4 好的。谢谢@***foe。 :)【参考方案3】:

我们的应用也遇到了同样的问题,我用atos逐行手动表示崩溃报告。

我现在调整了 Apple 的符号化脚本,使其适用于 Mac 应用程序和来自 PLCrashReporter 的崩溃报告。

https://github.com/lksnmnn/Symbolicate-CrashReports

如何使用:

确保您的计算机上有以下所有文件:

    崩溃报告:report.crash 应用的 dSYM 文件:MyApp.dSYM 您的应用的可执行文件/应用文件夹:MyApp.app 改进的符号化脚本:symbolicatecrash

现在进入命令行(终端)并执行以下操作:

# set the developer directory
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

# Now run the script
/Path/To/symbolicatecrash /Path/To/report.crash > /Path/To/readable_report.crash

# Use -v for verbose logging.

脚本会找到您的 dSYM 和可执行文件,并尽可能多地进行符号化。您现在将在声明的输出文件 readable_report.crash

中找到您的符号化报告

构建设置:

对于正确的报告和符号,将您的构建设置设置为:

Strip Debug Symbols During Copy: Yes
Strip Style: All Symbols
Strip Linked Product: Yes

【讨论】:

【参考方案4】:

在我有 dsym 和崩溃报告文件的情况下,我使用了 MacSymbolicator 和 Xsymbolicate。尽管 Xcode 内置的崩溃报告支持也变得更好,至少对于在 App Store 中销售的应用程序而言,他们完成了这项工作。

【讨论】:

以上是关于OS X 崩溃日志符号化的主要内容,如果未能解决你的问题,请参考以下文章

iOS 崩溃符号

在 Xcode 4.2 中启用崩溃日志符号化

隐藏动态框架的符号化崩溃日志

无法符号化崩溃日志

符号化没有崩溃日志的 iOS 崩溃堆栈跟踪

崩溃日志缺少一个符号帧