【问题标题】:How to symbolicate Mac OSX crash reports issued by Apple?如何符号化 Apple 发布的 Mac OSX 崩溃报告?
【发布时间】:2011-08-16 01:49:18
【问题描述】:

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

Symbolicating iPhone App Crash Reports

但此方法不适用于 Mac OSX 崩溃报告。

如何符号化我的 Mac OSX 崩溃报告?

谢谢!!

【问题讨论】:

  • 这不是重复的。这是关于 OS X 应用程序而不是 iPhone
  • 对不起,我只是想跳进去;-)

标签: xcode macos crash-reports symbolicate


【解决方案1】:

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

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

把它们放在一起:

  1. here下载Mac Symbolicator

  2. 打开 Xcode,选择 Window->Organizer,进入 Archive 标签并找到 发生崩溃的应用版本。

  3. 右键单击应用存档并选择“在 Finder 中显示”

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

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

  6. 奇迹发生

【讨论】:

  • 至于 2016 年 6 月,该链接仍然有效并发挥了作用。干得好,谢谢!
  • 对不起,对我不起作用!这个小巧的应用程序有两个问题。一,它没有签名,所以我必须让它在没有验证的情况下运行,然后 - 我拖动崩溃和.dsym,它永远挂起......没有该工具的文档,所以我什至没有知道会发生什么“魔法”——应该创建一个新的符号化崩溃文件吗?一些带有显示崩溃窗口的用户界面?这个工具试图做什么?
  • 谢谢!
  • 该应用程序运行良好,对我来说象征着 Mac 应用程序崩溃。谢谢!
  • app 很棒,但是有没有可能让它适应“示例过程”输出?它生成与 .crash 基本相同的输出,但即使您重命名它,应用程序也不接受它们
【解决方案2】:

this link

这个链接解释了所有用 crash 行来表示崩溃日志的内容。您只需要将 .dsyms 文件、.app 文件和崩溃日志放在同一个文件夹中

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

【讨论】:

    【解决方案3】:

    您可以使用 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)和崩溃地址中找到代码类型。搜索线程以找到崩溃的线程(它会说“线程 2 崩溃”之类的内容),然后找到您的对象。您需要该行中的两个地址(十六进制数字)来获取代码行。
    8. 获得所有信息后,您可以在终端中运行以下命令:

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

    例如,这里是堆栈跟踪的摘录:

    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 行崩溃了

    【讨论】:

    • 我喜欢这个答案。在 SO 上与此相关的所有答案中,这是唯一一个真正准确解释要做什么的答案。
    • 我编写了 Xsymbolicate,这是一个自动化大部分操作的工具:mattrajca.com/xsymbolicate
    • 感谢@MattRajca,但如果还评论说这个工具是商业的,而不是免费的,那就太好了。
    • 没有什么比创建它更有效。谢谢苹果。
    • 提示 - 如果您看到的不是 load-address,而是您的应用程序(或任何其他二进制图像)的名称,请在 二进制图像 部分下找到实际地址日志。
    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多