7

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

有没有一种简单的方法可以从符号化崩溃报告中的“离线”行号到源代码中的实际代码行?

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

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320)

因此,行号 320 几乎是正确的,但并不完全正确。差了几行...

4

2 回答 2

8

一句话……不。如果您在崩溃报告中看到这样的一行:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

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

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

于 2009-08-17T09:57:42.660 回答
0

我也遇到了这个问题,但这只是因为我正在查看比编译到崩溃的二进制文件中的更新版本的代码。当我回到我的源代码历史并找到相应版本的源代码时,行号完全匹配。

于 2015-08-12T23:58:38.490 回答