符号崩溃日志- Xcode 8 / macOS应用程序



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

我在Xcode中使用了传统的symbolicatcrash命令。app,但是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

我的应用程序是一个纯Cocoa应用程序 macOS(以前的OS X,不为iOS),是用Xcode 8.0在macOS Sierra上构建的,在Mac app Store上发布,用Swift编写。

同时,Xcode 8.0的组织者成功地标记了通过MAS收到的同一应用程序版本的崩溃日志。所以我想,dSYM文件至少是正确的。但是有些地方不对劲。

有谁知道我怎么能表示纯文本崩溃日志它的报告版本是12?

最后,我找到了如何表示我的macOS应用程序的崩溃日志!

我遵循了下面要点中的指示,并获得了人类可读的行。

如何标记OSX崩溃日志-gist

因此,简单地说,例如这一行:
0   com.MY_DOMAIN.MY_APP        0x000000010febce85 0x10fdc1000 + 1031813

在Terminal中运行以下行:

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

那么你将得到可读行:

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

使用此命令表示整个文件。用适当的值和内存地址(0x102e27000)替换MyApp和MyCrashFile,以便如下行:

Thread 0 Crashed: 0 com.bundle.identifier 0x0000000102f0bfb5 0x102e27000 + 937909

就变成:

xcrun atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x102e27000 -f MyCrashFile.crash > c.sym.txt && open c.sym.txt

使用Xcode 10.3在Mojave上测试

相关内容

最新更新