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 崩溃日志符号化的主要内容,如果未能解决你的问题,请参考以下文章