我正在尝试表示通过电子邮件从用户那里收到的崩溃日志。

我在Xcode.app中使用了传统的symbolicatecrash命令,但是symbolicatecrash命令刚刚失败并返回以下消息。

$/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash MY_APP.crash MY_APP.app.dSYM > readable.crash
Unsupported crash log version: 12 at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 614.


正如它所说,我要象征性的崩溃日志的报告版本是12。

Date/Time:             2016-10-15 15:40:42.625 +0900
OS Version:            Mac OS X 10.12 (16A323)
Report Version:        12


我的应用程序是用于macOS的纯Cocoa应用程序(以前是OS X,不适用于iOS),是在macOS Sierra上使用Xcode 8.0构建的,已分发在Mac App Store中并用Swift编写。

同时,Xcode 8.0的组织者成功地表示通过MAS接收的同一应用程序版本的崩溃日志。
所以我想,dSYM文件至少是正确的。
但是出了点问题。

有谁知道我可以用符号表示其报告版本为12的纯文本崩溃日志吗?

最佳答案

终于,我找到了如何象征我的macOS应用程序崩溃日志!

我按照下面的要点进行了说明,并获得了易于理解的代码行。

How to symbolize OSX crash logs -gist

因此,简单地说,例如对于此行:

0   com.MY_DOMAIN.MY_APP        0x000000010febce85 0x10fdc1000 + 1031813


在终端中运行以下行:

atos -o MY_APP.app/Contents/MacOS/MY_APP -arch x86_64 -l 0x10fdc1000 0x000000010febce85


那么您将获得可读的行:

Document.init() -> Document (in MY_APP) (DefaultKey.swift:85)

07-24 18:02