Xcode 如何象征苹果发布的MacOSX崩溃报告?

Xcode 如何象征苹果发布的MacOSX崩溃报告?,xcode,macos,crash-reports,symbolicate,Xcode,Macos,Crash Reports,Symbolicate,对于iOS崩溃报告,将崩溃报告拖放到组织者即可 但这种方法不适用于MacOSX崩溃报告 我怎样才能象征我的Mac OSX崩溃报告 谢谢 您可以使用atos命令获取应用程序崩溃的行号 这里有一个快速指南: 为您的工作文件创建一个目录 打开Xcode,选择Window->Organizer,转到Archive选项卡并查找发生崩溃的应用程序版本 右键单击应用程序存档并选择“在Finder中显示” 右键单击.xarchive,选择“显示内容”,找到AppName.dSYM目录和应用程序,并将它们复制到

对于iOS崩溃报告,将崩溃报告拖放到组织者即可

但这种方法不适用于MacOSX崩溃报告

我怎样才能象征我的Mac OSX崩溃报告


谢谢

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

这里有一个快速指南:

  • 为您的工作文件创建一个目录
  • 打开Xcode,选择Window->Organizer,转到Archive选项卡并查找发生崩溃的应用程序版本
  • 右键单击应用程序存档并选择“在Finder中显示”
  • 右键单击.xarchive,选择“显示内容”,找到AppName.dSYM目录和应用程序,并将它们复制到您的工作文件夹中
  • 将堆栈跟踪复制到工作文件夹
  • 打开终端并更改到您的工作文件夹。ls应显示YourApp.app YourApp.app.dSYM stacktrace.txt
  • 在TextEdit中打开堆栈跟踪。您需要从标头(系统架构-例如X86-64)和崩溃地址中找到代码类型。搜索线程以找到崩溃的线程(它会说类似于“线程2崩溃”),然后找到您的对象。您需要该行中的两个地址(十六进制数)才能获得代码行
  • 获得在终端中运行以下操作所需的所有信息后:

    atos-o YourApp.app/Contents/MacOS/YourApp-arch x86_64-l[加载地址][地址]

  • 例如,下面是stacktrace的摘录:

    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
    
    这将返回:

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

    告诉我我的应用程序在somefile.c的第135行崩溃了,上面inkjet的评论应该有自己的答案。 他构建了一个应用程序,可以从您的dsym和.crash文件中进行完整的符号化

    我制作的Sumbolon的免费替代品:bch.us.to/apps/macsymbolicator-它使用atos的方式与下面Rich Able所描述的方式相同2013年12月24日4时39分

    总而言之:

  • 从下载Mac Symbolicator

  • 打开Xcode,选择窗口->管理器,转到存档选项卡并查找 发生崩溃的应用程序版本

  • 右键单击应用程序存档并选择“在Finder中显示”

  • 右键单击.xarchive,选择“显示内容”并找到 AppName.dSYM目录

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

  • 奇迹发生了

  • 此链接解释了用崩溃行号符号化崩溃日志的所有内容。您只需要将.dsyms文件、.app文件和崩溃日志放在同一文件夹中


    我环顾四周,没有比这更好的了。因此,我希望这篇文章能帮助其他人。

    这不是重复的。这是关于OS X应用程序而不是iPhone抱歉,我只是想插手;-)我喜欢这个答案。在所有与此相关的答案中,这是唯一一个真正解释了该做什么的答案。我写了Xsymbolicate,这是一个自动化大部分内容的工具:谢谢@MattRajca,但最好也评论一下,这个工具是商业性的,而不是免费的。没有什么比创建它更有效的了。感谢apple.提示-如果您看到的不是
    加载地址
    ,而是您的应用程序(或任何其他二进制图像)的名称,请在日志的二进制图像部分找到实际地址。截至2016年6月,该链接仍然有效,并发挥了神奇的作用。干得好,塔克斯!对不起,这不适合我!这个小程序有两个问题。第一,它没有签名,所以我必须允许它在没有验证的情况下运行,然后-我拖动崩溃和.dsym,它将永远挂起。。。没有该工具的文档,所以我甚至不知道该期待什么“魔力”——应该创建一个新的符号化崩溃文件吗?某个UI有一个显示崩溃的窗口?这个工具想做什么?谢谢你!
    got symbolicator for MyApp.app/Contents/MacOS/MyApp, base address 100000000
    obj_free (in MyApp) (somefile.c:135)