我从Crashlytics获得了崩溃日志,请参见下文。我不知道+ 56
在line 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
答案 0 :(得分:3)
是的,这是您代码中的行号。
row
Xcode为您提供回溯日志,并提供有关活动框架的信息以帮助您跟踪问题。
上面的崩溃日志可以理解如下。
1-是崩溃的帧。 0是最高的
CoreFoundation-是崩溃背后的负责任框架。
0x183406360-在磁盘上具有timeIntervalSinceDate函数的地址。
[NSDate timeIntervalSinceDate:] + 56-这是重要的部分,它说明函数,而+ 56是崩溃的函数地址的偏移量。
感谢马特指出。
编辑: 基本上,崩溃报告有三种类型
未符号化-仅包含地址和偏移量
部分符号化-显示方法的基地址+方法名称+与基地址的偏移量
完全表示。 -这显示了基地址+方法名称+ 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。只有苹果公司有此功能。当然,由于您仍然没有该功能的代码,因此拥有行号可能不会有太大帮助。