OS X崩溃日志符号

时间:2013-07-05 18:45:23

标签: xcode crash-reports xcode4.6 symbolicate

我无法使用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软件。

4 个答案:

答案 0 :(得分:6)

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

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`

答案 1 :(得分:3)

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

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

或者您可以按atos

的建议使用trojanfoe
$cd directory
$atos -o MyApp.app/Contents/MacOS/MyApp
info 0x00085f3c

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

答案 2 :(得分:2)

我们的应用程序遇到了同样的问题,我正在逐行手动地将崩溃报告与atos进行符号化。

我现在调整了Apple的符号脚本,以便它适用于Mac应用程序和PLCrashReporter的崩溃报告。

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

如何使用

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

  1. 崩溃报告: report.crash
  2. 您应用的dSYM文件: MyApp.dSYM
  3. 您应用的可执行文件/应用文件夹: MyApp.app
  4. 改进的符号脚本: symbolicatecrash
  5. 现在进入命令行(终端)并执行以下操作:

    # 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
    

答案 3 :(得分:0)

在有dsym和崩溃报告文件的情况下,我使用了MacSymbolicatorXsymbolicate。尽管Xcode内置的崩溃报告支持也变得更好了,但至少对于App Store中出售的应用程序来说,他们还是满足了简单的需求。