如何表示Apple发布的Mac OSX崩溃报告?

时间:2011-04-30 13:46:38

标签: xcode macos crash-reports symbolicate

对于iOS崩溃报告,只需将崩溃报告拖放到管理器即可。

Symbolicating iPhone App Crash Reports

但是这种方法不适用于Mac OSX崩溃报告。

如何表示我的Mac OSX崩溃报告?

谢谢!

3 个答案:

答案 0 :(得分:30)

您可以使用atos命令获取应用程序崩溃的行号。

这是一个快速指南:

  1. 为工作文件创建目录
  2. 打开Xcode,选择Window-> Organizer,转到Archive选项卡,找到遇到崩溃的应用版本。
  3. 右键点击应用档案,然后选择“在Finder中显示”
  4. 右键单击.xarchive,选择“显示内容”并找到AppName.dSYM目录和应用程序并将它们复制到您的工作文件夹
  5. 将堆栈跟踪复制到工作文件夹
  6. 打开终端并切换到您的工作文件夹。 ls应显示YourApp.app YourApp.app.dSYM stacktrace.txt
  7. 在TextEdit中打开堆栈跟踪。您需要从标题(系统架构 - 例如X86-64)和崩溃地址中找到代码类型。搜索线程以找到崩溃的那个(它会说“Thread 2 Crashed”之类的东西),然后找到你的对象。您需要该行的两个地址(十六进制数字)来获取代码行。
  8. 获得所有信息后,您需要在终端中运行以下内容:

    atos -o YourApp.app/Contents/MacOS/YourApp -arch x86_64 -l [load-address] [address]

  9. 例如,这是一个来自堆栈跟踪的摘录:

    Process:         MyApp [228]
    Path:            /Applications/MyApp.app/Contents/MacOS/MyApp
    Identifier:      uk.co.company.app
    Version:         1.0 (1)
    App Item ID:     774943227
    App External ID: 218062633
    Code Type:       X86-64 (Native)
    Parent Process:  launchd [154]
    Responsible:     MyApp [228]
    User ID:         501
    
    Date/Time:       2013-12-17 10:20:45.816 +0100
    OS Version:      Mac OS X 10.9 (13A603)
    Report Version:  11
    Anonymous UUID:  7AA662B1-7696-A2C5-AF56-9D4BA2CE9515
    
    
    Crashed Thread:  2
    
    Exception Type:  EXC_CRASH (SIGABRT)
    Exception Codes: 0x0000000000000000, 0x0000000000000000
    
    <snip>
    
    Thread 2 Crashed:
    0   libsystem_kernel.dylib          0x00007fff8b95a866 __pthread_kill + 10
    1   libsystem_pthread.dylib         0x00007fff8bf4f35c pthread_kill + 92
    2   libsystem_c.dylib               0x00007fff87571bba abort + 125
    3   libsystem_malloc.dylib          0x00007fff897ae093 free + 411
    4   uk.co.company.app           0x0000000103580606 0x10356e000 + 75270
    5   uk.co.company.app               0x00000001035803da 0x10356e000 + 74714
    6   com.apple.Foundation            0x00007fff8d00970b __NSThread__main__ + 1318
    7   libsystem_pthread.dylib         0x00007fff8bf4e899 _pthread_body + 138
    8   libsystem_pthread.dylib         0x00007fff8bf4e72a _pthread_start + 137
    9   libsystem_pthread.dylib         0x00007fff8bf52fc9 thread_start + 13
    

    我可以看到“代码类型”是x86_64,线程2崩溃,而第4行我的代码正在运行,所以我们有我们需要的地址。使用此信息,我运行以下内容:

    $ atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x10356e000 0x0000000103580606
    

    返回:

    got symbolicator for MyApp.app/Contents/MacOS/MyApp, base address 100000000
    obj_free (in MyApp) (somefile.c:135)
    

    告诉我我的应用程序在somefile.c的第135行崩溃了。

答案 1 :(得分:12)

@inkjet上面的评论值得回答。 他构建了一个应用程序,可以从您的dsym和.crash文件中完整地进行符号化。

  

我做的Sumbolon的免费替代品:bch.us.to/apps/macsymbolicator - 它使用atos,方法与Rich Able在下面描述的方式相同。 - 墨水12月24日&13; 13日4:39

把它们放在一起:

  1. here

  2. 下载Mac Symbolicator
  3. 打开Xcode,选择Window-&gt; Organizer,转到Archive选项卡并查找 发生崩溃的应用版本。

  4. 右键点击应用档案并选择&#34;在Finder中显示&#34;

  5. 右键单击.xarchive,选择&#34;显示内容&#34;找到了 AppName.dSYM目录

  6. 将.crash文件和AppName.dsym拖到Sumbolon

  7. 魔术发生

答案 2 :(得分:0)

this link

这个链接解释了所有用符号表示崩溃日志的崩溃日志。你只需要将.dsyms文件,.app文件和崩溃日志放在同一个文件夹中

我环顾四周,发现没有比这更好的了。所以我希望这会帮助其他人发布它。

相关问题