崩溃日志不代表系统库 armv7s
Posted
技术标签:
【中文标题】崩溃日志不代表系统库 armv7s【英文标题】:crash log does not symbolicate system libraries armv7s 【发布时间】:2013-05-01 15:58:52 【问题描述】:我正在尝试分析客户发送给我的崩溃日志,但我无法让它象征系统库调用。它确实正确地象征着对我自己的方法的调用。这使得分析哪里出了问题变得不切实际。 我运行了'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
【问题讨论】:
【参考方案1】:解决这个问题只有两种方法:
-
您需要一台运行 iOS 6.1.3 的 iPhone 5 设备来插入您的计算机,以便 Xcode 可以导入符号
或者您需要从其他开发人员那里获取符号并用它们替换您的符号。
通常这些符号是最新 Xcode 版本的一部分,但当 iOS 版本仅包含错误修复但没有 API 更改时,Apple 并不总是提供 Xcode 更新。
【讨论】:
我从朋友那里借了一部 6.1.3 的 iPhone 5,现在崩溃日志已正确符号化。但我还在 Xcode (13811970) 上记录了一个错误报告,因为我认为可以合理地期望 Xcode 可以符号化所有崩溃日志,而无需找到恰好运行产生崩溃日志的确切版本的 iOS 的 iPhone 硬件。 对于#2 - 你如何从其他开发者那里获得符号? 符号位于~/Library/Developer/Xcode/iOS DeviceSupport/
,每个iOS版本都有一个目录。
是否有任何在线资源可以让我下载这些符号,无论是由 Apple 提供还是其他方式提供?我试图将其作为一个单独的问题(***.com/questions/18500104/…)提出,但它已作为此问题的副本关闭。
不,没有可用的在线资源。否则我会写出三种方法来解决这个问题。【参考方案2】:
我在使用 XCode5 的 iOS7 应用程序中也遇到了这个问题,即使我有所有正确的符号。
我发现我已将我的 dSYM 文件从聚光灯可以对其进行索引的存档中取出,但崩溃日志只是部分符号化(如问题所示)。但是我将实际的 .app 文件留在了 xcarchive 中,并且它无法被 Spotlight 索引。一旦我将该文件从存档复制到可见位置,我就能够正确地进行符号化。
【讨论】:
这也解决了我的问题。就我而言,只是我自己的应用程序中的方法没有被符号化。认为这可能是 Spotlight 问题,所以我将 dSYM 复制到桌面,但这并没有帮助。复制完整的捆绑包内容——包括 .app——让它正常工作!【参考方案3】:在 Kerni 的以下回答中: 你可以用你的目标iOS版本安装相关的Xcode并复制~/Library/Developer/Xcode/iOS DeviceSupport/
【讨论】:
以上是关于崩溃日志不代表系统库 armv7s的主要内容,如果未能解决你的问题,请参考以下文章