【问题标题】:Getting info from .ips crash report file从 .ips 崩溃报告文件中获取信息
【发布时间】:2014-05-08 11:51:12
【问题描述】:

我已经在 iPhone 5 和 4s 上测试了我的应用。然后我将我的应用程序发送给测试人员,他有 5s iPhone。一切都很好。过了一段时间,当我向应用程序添加一些功能时,我给他发了另一个版本,但现在他说它在启动时崩溃了。在我的设备上一切正常。我让他给我发崩溃报告。这是 .ips 文件:

{"bundleID”:"name.my-app","app_name”:”my-app","bug_type":"109","name”:”my-app","os_version":"iPhone OS 7.1 (11D167)","version":"1.0 (1.0)"}
Incident Identifier: 3916. . .194
CrashReporter Key:   58fd. . .7399
Hardware Model:      iPhone6,2
Process:             my-app [277]
Path:                /var/mobile/Applications/0AB0. . .B5B/my-app.app/my-app
Identifier:          name.my-app
Version:             1.0 (1.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2014-03-27 02:10:39.959 +0400
OS Version:          iOS 7.1 (11D167)
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  24

Last Exception Backtrace:
(0x1893e2950 0x1958e81fc 0x1893e2890 0x1000f09a0 0x195ec0014 0x195ebffd4 0x195ec64a8 0x195ec24c0 0x195ec70f4 0x195ec74fc 0x1960556bc 0x19605554c)

Thread 0:
0   libsystem_kernel.dylib          0x0000000195fbdca0 0x195fbc000 + 7328
1   CoreFoundation                  0x00000001893a2570 0x1892d8000 + 828784
2   CoreFoundation                  0x00000001893a0764 0x1892d8000 + 821092
3   CoreFoundation                  0x00000001892e16cc 0x1892d8000 + 38604
4   GraphicsServices                0x000000018efc5c08 0x18efb8000 + 56328
5   UIKit                           0x000000018c412fd8 0x18c398000 + 503768
6   my-app                      0x00000001000f1ae8 0x1000dc000 + 88808
7   libdyld.dylib                   0x0000000195edba9c 0x195ed8000 + 15004

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

Thread 24 Crashed:
0   libsystem_kernel.dylib          0x0000000195fd658c 0x195fbc000 + 107916
1   libsystem_c.dylib               0x0000000195f6a804 0x195f08000 + 403460
2   libc++abi.dylib                 0x0000000195190990 0x195190000 + 2448
3   libc++abi.dylib                 0x00000001951adc28 0x195190000 + 121896
4   libobjc.A.dylib                 0x00000001958e84d0 0x1958e0000 + 34000
5   libc++abi.dylib                 0x00000001951ab164 0x195190000 + 110948
6   libc++abi.dylib                 0x00000001951aaa7c 0x195190000 + 109180
7   libobjc.A.dylib                 0x00000001958e8314 0x1958e0000 + 33556
8   CoreFoundation                  0x00000001893e288c 0x1892d8000 + 1091724
9   my-app                      0x00000001000f099c 0x1000dc000 + 84380
10  libdispatch.dylib               0x0000000195ec0010 0x195ebc000 + 16400
11  libdispatch.dylib               0x0000000195ebffd0 0x195ebc000 + 16336
12  libdispatch.dylib               0x0000000195ec64a4 0x195ebc000 + 42148
13  libdispatch.dylib               0x0000000195ec24bc 0x195ebc000 + 25788
14  libdispatch.dylib               0x0000000195ec70f0 0x195ebc000 + 45296
15  libdispatch.dylib               0x0000000195ec74f8 0x195ebc000 + 46328
16  libsystem_pthread.dylib         0x00000001960556b8 0x196054000 + 5816
17  libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 25:
0   libsystem_kernel.dylib          0x0000000195fd6e74 0x195fbc000 + 110196
1   libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 26:
0   libsystem_kernel.dylib          0x0000000195fd6e74 0x195fbc000 + 110196
1   libsystem_pthread.dylib         0x0000000196055548 0x196054000 + 5448

Thread 24 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x00000001035de7b8
    x4: 0x0000000000002060   x5: 0x00000001035de870   x6: 0x000000000000006e   x7: 0x0000000000000640
    x8: 0x000000000c000000   x9: 0x0000000004000000  x10: 0x0000000098d956f7  x11: 0x0000000000000300
   x12: 0x0000000000000000  x13: 0x0000000000000000  x14: 0x0000000000000000  x15: 0x0000000195f83dcb
   x16: 0x0000000000000148  x17: 0x00c8d95a0138084d  x18: 0x0000000000000000  x19: 0x0000000000000006
   x20: 0x00000001035e0000  x21: 0x000000017013b5d8  x22: 0x000000017013b600  x23: 0x000000015d610870
   x24: 0x00000001963068e8  x25: 0x0000000100100000  x26: 0x0000000198d87c40  x27: 0x000000017026c2c0
   x28: 0x000000000000000a  fp: 0x00000001035de7f0   lr: 0x000000019605916c
    sp: 0x00000001035de7d0   pc: 0x0000000195fd658c cpsr: 0x00000000

Binary Images:
0x1000dc000 - 0x1000f7fff my-app arm64  <d6f1f532dfbc36c497acefc4aa2c7f2f> /var/mobile/Applications/0AB088E7-6425-4287-9C4B-1EEF37E7DB5B/my-app.app/my-app
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
0x19606c000 - 0x19608ffff libxpc.dylib arm64  <7077afbad955309d8cb9965960c781f3> /usr/lib/system/libxpc.dylib

我在这里阅读了很多类似的问题,他们说我需要通过终端来表示 .ips。但它不起作用。 atos 命令返回无法读取 my-app.app,xcrun atos 返回与我指定的内存地址相同的内存地址。

xcrun atos -arch arm64 -o 'my-app.app' 0x196054000 + 5448
0x196054000
+
5448

我不确定,我是否需要指定 + 号,但没有它也不起作用。

在此先感谢,如果有任何帮助,我将不胜感激。

更新:

我想通了。 NSFileManager 出了点问题,它在 64 位和 32 位上的行为不同

[fileManager fileExistsAtPath:pathToCacheDir isDirectory:&isDirectory];

isDirectory 返回 NO,尽管 pathToCacheDir 是有效目录,这就是我得到异常的原因。 但问题仍然有效,我怎样才能从测试人员那里得到一些更容易理解的报告?

【问题讨论】:

  • 解决方案在这里描述:stackoverflow.com/questions/1460892/…
  • @gagarwal 是的,我见过。它没有帮助。如上所述,它只是返回内存地址,没有任何解释。
  • 你可以使用 testflight 之类的服务:testflightapp.com/sdk/download
  • @Thorsten 这似乎是一项非常酷的服务!但不幸的是它现在不起作用:(
  • 感谢您提出的好问题!包括我自己在内的大多数开发人员都无法评估这些崩溃日志。这是多么不方便的设计?即使在 Xcode 内部,一些问题也无法通过代码解决。我怎么能期望崩溃日志将我带到错误行...最重要的是,有新的 Swift 版本进入,旧版本不再受支持。转换工具不会转换项目的 %50。所有这一切都让我得出结论,Apple 不会在乎。我认为有更好的地方值得我花时间、我的努力和我的产品。

标签: ios crash-reports ad-hoc-distribution


【解决方案1】:

我刚从一个 Windows 用户那里得到一大堆 .ips 文件,我也想知道如何处理它们。将它们重命名为 .crash 让 Xcode 很乐意导入它们(转到 Organizer、Library Device Logs 和 Import)并对其进行符号化。

编辑:当我最初写这个答案时,它是考虑到 Xcode 6。较新版本的 Xcode(我认为是 7+)已经改变了一些东西。 According to Apple:

Xcode 将自动尝试符号化所有崩溃报告 它遇到。符号化所需要做的就是添加 向 Xcode Organizer 报告崩溃报告。

  1. 将 iOS 设备连接到您的 Mac
  2. 从“窗口”菜单中选择“设备”
  3. 在左列的“设备”部分下,选择一个设备
  4. 点击右侧面板“设备信息”部分下的“查看设备日志”按钮
  5. 将崩溃报告拖到显示面板的左列
  6. Xcode 会自动符号化崩溃报告并显示结果

【讨论】:

  • 在 Xcode 8 中,Organizer 似乎不再具有“库设备日志”。
  • @jblack 我认为它在 Xcode 7 中移动了——我相信如果您在连接了实际设备的情况下转到“设备”,选择设备,单击“查看设备日志”,然后将文件拖到显示面板的左列,它应该可以解决问题(参考:developer.apple.com/library/content/technotes/tn2151/…
  • 在 Xcode 9 中,我不得不在“查看设备日志”屏幕中从“此设备”切换到“所有日志”。将文件重命名为 .crash 并拖入。
  • 我的崩溃日志只是部分符号化(对于标准库),直到我在管理器窗口中按下相应构建的“下载调试符号”,然后在崩溃日志上点击“重新符号化”。
  • 与 Ernie 一样,我不得不将它们重命名为崩溃并显示所有日志。我还必须重新启动 Xcode 一次才能显示/关闭设备窗口并重新打开
【解决方案2】:

使用 atos 时,需要指定二进制图像的首地址,并且需要从 .app 和 .dsym 所在目录运行命令。

然后以下命令将起作用: atos -o [my-app.app/my-app] -arch [例如 armv7] -l [ips 文件二进制图像部分的第一个地址] [最后一个异常回溯部分的所有地址]

在你的情况下:

atos -o my-app.app/my-app -arch arm-64 -l 0x1000dc000 0x1893e2950 0x1958e81fc 0x1893e2890 0x1000f09a0 0x195ec0014 0x195ebffd4 0x195ec64a8 0x195ec24c0 0x195ec70f4 0x195ec74fc 0x1960556bc 0x19605554c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多