[英]How to interpret iOS crash log from Crashlytics?
我从 Crashlytics 得到了一个崩溃日志,见下文。 我不知道line 3
+ 56
是什么意思。 我不确定它是否与源代码中的行号有关。
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
“+ 56”是编译后的二进制文件中的偏移量,而不是源代码中的行号。
1 CoreFoundation 0x183406360 -[NSDate timeIntervalSinceDate:] + 56
Xcode 为您提供回溯日志并提供有关活动帧的信息以帮助您跟踪问题。
上面的崩溃日志可以这样理解。
1 -那是它崩溃的框架。 0 是最高的
CoreFoundation -它是崩溃背后的负责框架。
0x183406360 - timeIntervalSinceDate 函数存在的磁盘地址。
[NSDate timeIntervalSinceDate:] + 56 -这是重要的部分,它说明了函数,+ 56 是从崩溃的函数地址的偏移量。
感谢马特指出。
编辑:基本上,有三种类型的崩溃报告
unsymbolicated - 只包含地址和偏移量
部分符号化 - 这显示方法的基地址 + 方法名称 + 与基地址的偏移
完全符号化。 - 这显示基地址 + 方法名称 + 文件名:行号
希望能帮助到你。
使用的约定是:
<address> <name of symbol> <offset into symbol> <line number>
因此,对于上面的第 3 行, + 56
表示 PC 是函数-[NSDate timeIntervalSinceDate:]
56 个字节。 它不是行号。
为了让 Crashlytics 或任何其他服务提供行号信息,他们需要访问调试符号信息。 此信息的一个非常常见的来源是 dSYM。 因此,为了为此 NSDate 函数提供行号信息,您需要 CoreFoundation 的 dSYM。 只有苹果有这个。 当然,因为无论如何你都没有这个函数的代码,所以行号可能不会有太大帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.