为什么我在GDB中收到消息“单步执行直到退出......没有行号信息”?

时间:2010-01-31 01:55:19

标签: c gcc gdb

我使用 gcc 4.4.1 使用标记-g编译了我的C程序,但是当我尝试单步执行 gdb版本7.0中的一个函数时/ strong>,我收到消息:

"Single stepping until exit from function _DictionaryTree_getNodeList, 
which has no line number information."

有人能告诉我为什么会这样吗?

7 个答案:

答案 0 :(得分:31)

只是猜测,但在另一个未用-g编译的文件中是_DictionaryTree_getNodeList?

答案 1 :(得分:9)

我遇到了同样的问题,但在我的情况下,将-g添加到编译器是不够的,所以我按照Manav的建议使用了-ggdb

答案 2 :(得分:6)

在我的情况下,问题是gccgdb 之间的版本偏差。

从搜索到这里后,这些答案都不适合我的情况,我发现(因为别名/符号链接/ Makefile /环境变量)我不小心使用了更新的GCC(4.8.x)和较旧的GDB(7.2)。 升级到更新版本的GDB(7.8)解决了这个问题。出于某种原因,使用较新的GCC和较旧的GDB并不起作用。

答案 3 :(得分:1)

我也有此错误消息,但我的问题来源不同。如果有任何人仍然遇到任何问题,请确保您的文件中有#include <stdio.h>stdio.h周围有相应的括号(如果我在stdio.h附近,则会显示短信)。

答案 4 :(得分:0)

当我使用-g选项编译文件而没有-g选项时,我遇到了同样的问题。 对于其中一个文件,gdb显示行号没有任何问题(即使它是在没有-g选项的情况下编译的)。 而对于另一个文件,我必须明确提到-g flag ...

关于源文件是否可以在运行时加载的任何想法  具有交叉引用的GDB将是一个很好的解决方案......通过映射  到地址的行:D。

答案 5 :(得分:0)

我遇到了这个问题,因为我正在调试共享库,而没有将LD_LIBRARY_PATH指向具有调试endstates的正确位置。

你可以使用

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH

希望这对某人有帮助

答案 6 :(得分:0)

尽管我已经使用-g2编译,但我遇到了同样的麻烦。将其更改为-g3就可以了。