【问题标题】:iphone :How to do symobolication of crash report?iphone:如何对崩溃报告进行符号化?
【发布时间】:2011-08-10 07:17:50
【问题描述】:

在我的应用程序中,我收到了崩溃报告

Exception Type:  EXC_BAD_ACCESS (SIGBUS)

Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000

Crashed Thread:  7

In Thread 7 :


Thread 7 Crashed:

0   CoreFoundation                  0x3728ba96 0x37278000 + 80534

1   CFNetwork                       0x36617b84 0x36616000 + 7044

2   CFNetwork                       0x36617af6 0x36616000 + 6902

3   MusicBandApp                    0x0000bbfc 0x1000 + 44028

4   MusicBandApp                    0x0000b740 0x1000 + 42816

5   Foundation                      0x33b88382 0x33b6b000 + 119682

6   Foundation                      0x33bfa5c6 0x33b6b000 + 587206

7   libsystem_c.dylib               0x3579530a 0x35762000 + 209674

8   libsystem_c.dylib               0x35796bb4 0x35762000 + 215988

但无法显示特定的崩溃文件名和行号。

如何对这个崩溃报告进行虚拟化。

【问题讨论】:

  • 发布出现此错误的代码。
  • 同时尝试在设备上运行应用程序并检查设备日志和设备上的崩溃报告

标签: iphone objective-c cocoa-touch ios4


【解决方案1】:

我们需要一个名为 symbolitecrash 的文件来处理这个文件。该文件位于/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources

  1. 打开终端

  2. symbolitecrash文件复制到终端打开时显示的默认位置。

    例如。终端窗口:-

    上次登录时间:ttys000 上的 6 月 22 日星期三 15:28:21 用户MM:~用户$

    这里,默认位置是“用户”目录。

  3. 使用 -h 选项运行此脚本提供的帮助很少:

    UserMM:~ user$ 符号崩溃 -h

    用法:

    /usr/local/bin/symbolicatecrash [-Ah] [-o ] LOGFILE [SYMBOL_PATH ...]

    表示一个故障转储 LOGFILE,它可能是“-”来引用标准输入。默认情况下,

    将采用所有启发式方法来尝试符号化所有地址。

    可以在指定目录下找到其他符号文件。

    选项:

    -A 只表示应用程序,而不是库

    -o 如果指定,符号化的日志将被写入 OUTPUT_FILE(默认为 stdout)

    -h 显示这条消息

    -v 详细

  4. 将 .crash 文件放在复制 symbolitecrash 文件的位置。

  5. 要将符号添加到崩溃日志,您需要在为 AppStore 编译应用程序时由链接器生成的 dSYM 文件。换句话说,当您为 AppStore 构建时,您应该将 dSYM 包保存在由 Time Machine 备份的安全位置。这个非常重要。 您应该为曾经发布的每个应用程序版本保留一份 dSYM 副本。如果你有这个包,将代码偏移量转换为带有行号的函数名从未如此简单:

$ symbolicatecrash MiMo_2011-06-22-143801_Anands-Ipod.crash myApp.app.dSYM > myApp_2011-06-22-143801_Anands-Ipod1.crash

myApp_2011-06-22-143801_Anands-Ipod1.crash 是在同一位置生成的新崩溃文件。

结果如下:

Thread 0 Crashed:
0   libobjc.A.dylib           0x300c87ec objc_msgSend + 20
1   myApp                      0x00006434 -[BoardView setSelectedPiece:] (BoardView.m                              :321)

【讨论】:

  • :我在第2步有查询,我必须在本地文件夹中复制 symbolitecrash 文件或在终端中复制 symbolitecrash 文件路径?
  • @Ankit 你必须设置路径或者你可以将它复制到根文件夹
  • 我要设置路径...我给定了 symbolitecrash 文件的路径
【解决方案2】:

我也在this post中一步步描述了如何做到这一点

对我来说效果很好:

Crash Symbolized http://k.minus.com/jk4X2obwZMI7j.png

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 2018-02-12
    • 2011-09-09
    • 2013-11-17
    • 2011-06-25
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多