崩溃日志不代表系统库 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的主要内容,如果未能解决你的问题,请参考以下文章

快速代码崩溃,日志:dyld:未加载库:@rpath/libswiftCore.dylib

无法符号化崩溃日志

苹果手机崩溃日志怎么看

使用静态库符号化应用程序的崩溃日志

iPhone验机系统崩溃日志崩溃一次

如何获得Android的崩溃日志