崩溃日志无法符号化系统库 armv7s。

5

我正在尝试分析客户发送给我的崩溃日志,但无法将系统库调用符号化。它可以正确地符号化对我自己方法的调用。这使得分析出问题变得不太实际。

我运行了“symbolicatecrash -v”命令,以查看缺少符号化的原因。可能的原因是:

## /Users/baraupp/Library/Developer/Xcode/iOS DeviceSupport/6.1.3 (10B329)/Symbols/usr/lib/system/libsystem_kernel.dylib doesn't contain armv7s slice

我已经用“lipo”检查了提到的库,它们包含“armv7”但没有“armv7s”。在搜索网页后得知这是iPhone 4和iPhone 5之间的区别。通常解决方案似乎是插入iPhone 5设备并从那里下载库。但我没有iPhone 5。
有人知道如何解决这个问题吗?
为了让您了解符号化的外观:
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3bab0350 0x3ba9f000 + 70480
1   libsystem_c.dylib               0x3ba26fb2 0x3b9f8000 + 192434
2   libsystem_c.dylib               0x3ba63366 0x3b9f8000 + 439142
3   libc++abi.dylib                 0x3b00bdda 0x3b008000 + 15834
4   libc++abi.dylib                 0x3b009094 0x3b008000 + 4244
5   libobjc.A.dylib                 0x3b5bca58 0x3b5b4000 + 35416
6   libc++abi.dylib                 0x3b009118 0x3b008000 + 4376
7   libc++abi.dylib                 0x3b0091b0 0x3b008000 + 4528
8   libc++abi.dylib                 0x3b00a626 0x3b008000 + 9766
9   libobjc.A.dylib                 0x3b5bc9b0 0x3b5b4000 + 35248
10  CoreFoundation                  0x3380829c 0x337ff000 + 37532
11  CoreFoundation                  0x338080c4 0x337ff000 + 37060
12  GraphicsServices                0x373e7336 0x373e2000 + 21302
13  UIKit                           0x357242b4 0x356cd000 + 357044
14  Flyskyhy                        0x000f8a66 main (main.m:17)
15  Flyskyhy                        0x000f8a1c 0xf6000 + 10780
3个回答

8

有两种方法可以解决这个问题:

  1. 你需要一台安装了iOS 6.1.3系统的iPhone 5设备,将其连接到电脑上,这样Xcode就能导入符号。
  2. 或者你需要从其他开发者那里获取符号,并用它们替换自己的符号。

通常符号是最新Xcode版本的一部分,但当iOS版本仅包含错误修复而没有API更改时,苹果并不总是提供Xcode更新。


12
我向朋友借了一台安装了6.1.3版本的iPhone 5,现在崩溃日志已经被正确符号化了。但我也在Xcode上记录了一个bug报告(编号13811970),因为我认为可以合理地期望Xcode能够对所有崩溃日志进行符号化,而不需要找到运行产生崩溃日志的恰好是该iOS版本的iPhone硬件设备。 - fishinear
对于问题#2 - 你如何从另一个开发者那里获取符号? - Andrew
2
这些符号位于 ~/Library/Developer/Xcode/iOS DeviceSupport/ 目录下,每个 iOS 版本都有对应的一个目录。 - Kerni
有没有任何在线资源可以让我下载由苹果或其他人提供的符号?我试图将其作为单独的问题提出(https://dev59.com/0GMl5IYBdhLWcg3wTlnZ?lq=1),但它被关闭为重复。 - Arkaaito
不,目前没有在线资源可用。否则我会写下三种解决方法的。 - Kerni
谢谢。听起来如果有资源的话,它非常难找。我将使用支持事件并尝试找出它是被禁止还是仅仅不存在。 - Arkaaito

3
我也遇到了这个问题,使用XCode5开发的iOS7应用,尽管我有所有正确的符号。我发现我的dSYM文件已经被移到了无法被Spotlight索引的档案中,因此崩溃日志只能部分地被符号化(如问题所示)。但是我留下了实际的.app文件在xcarchive中,而它不能被Spotlight索引。当我把那个文件从归档中复制到可见位置时,我就可以正确地进行符号化了。

这也解决了我的问题。在我的情况下,只是我自己应用程序中的方法没有被符号化。我以为可能是一个 Spotlight 问题,所以我把 dSYM 复制到桌面上,但那并没有帮助。复制完整的包内容 - 包括 .app - 让它正确地工作了! - robotspacer

0
在 Kerni 的回答中: 您可以安装与目标 iOS 版本相关的 Xcode,并复制 ~/Library/Developer/Xcode/iOS DeviceSupport/。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接