如何从Crashlytics解释iOS崩溃日志?

时间:2018-08-21 05:58:50

标签: ios crashlytics google-fabric

我从Crashlytics获得了崩溃日志,请参见下文。我不知道+ 56line 3中的含义。我不确定它是否与源代码中的行号有关。

Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x1826f0910 objc_msgSend + 16
1  CoreFoundation                 0x183406360 -[NSDate timeIntervalSinceDate:] + 56
2  BLESupport                     0x10084a63c -[CustomPeripheral getDeviceParamsDidFinish:dictionary:paramType:error:] + 380
3  BLESupport                     0x100850ab4 -[CustomPeripheral peripheral:didUpdateValueForCharacteristic:error:] + 4032

2 个答案:

答案 0 :(得分:3)

是的,这是您代码中的行号。

row

Xcode为您提供回溯日志,并提供有关活动框架的信息以帮助您跟踪问题。

上面的崩溃日志可以理解如下。

1-是崩溃的帧。 0是最高的

CoreFoundation-是崩溃背后的负责任框架。

0x183406360-在磁盘上具有timeIntervalSinceDate函数的地址。

[NSDate timeIntervalSinceDate:] + 56-这是重要的部分,它说明函数,而+ 56是崩溃的函数地址的偏移量。

感谢马特指出。

编辑: 基本上,崩溃报告有三种类型

  1. 未符号化-仅包含地址和偏移量

  2. 部分符号化-显示方法的基地址+方法名称+与基地址的偏移量

  3. 完全表示。 -这显示了基地址+方法名称+ FileName:LineNumber

希望有帮助。

答案 1 :(得分:0)

使用的约定是:

<address> <name of symbol> <offset into symbol> <line number>

因此,对于上面的第3行,+ 56表示PC是进入函数-[NSDate timeIntervalSinceDate:]的56个字节。不是行号。

为了使Crashlytics或任何其他服务提供行号信息,他们需要访问调试符号信息。此信息的一个非常常见的来源是dSYM。因此,为了提供此NSDate函数的行号信息,您需要dSYM for CoreFoundation。只有苹果公司有此功能。当然,由于您仍然没有该功能的代码,因此拥有行号可能不会有太大帮助。