如何在符号化崩溃报告(iPhone/Mac)中获取正确的行号?

Mar*_*Thé 7 iphone macos xcode crash-reports

在表示崩溃报告时,我注意到行号已关闭.我用一个故意导致崩溃的项目对此进行了测试.似乎生成的行号不包括某些行,例如注释行或编译器预处理器语句(不确定它的作用和不包括)...

是否有一种简单的方法可以从符号化崩溃报告中的"关闭"行号到源中的实际代码行?

编辑:符号化崩溃报告中的一行示例:

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320)
Run Code Online (Sandbox Code Playgroud)

因此,行号320几乎是正确的,但不完全正确.这几行......

iKe*_*dac 7

总之......没有.如果您在崩溃报告中查看这样的行:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

"+43"不是行号,而是从函数开头的内存位置.您编写的代码根本不存在于编译的二进制文件中 - 编译器优化并更改代码(至少在发布版本中),因此它通常与您编写的内容不匹配.

不幸的是,解决方案是为遇到崩溃的人提供一个可以远程调试的调试版本,或者至少抛出NSLog()语句来帮助跟踪它,和/或编写更小的方法.