我使用 gcc 4.4.1 使用标记-g
编译了我的C程序,但是当我尝试单步执行 gdb版本7.0中的一个函数时/ strong>,我收到消息:
"Single stepping until exit from function _DictionaryTree_getNodeList,
which has no line number information."
有人能告诉我为什么会这样吗?
答案 0 :(得分:31)
只是猜测,但在另一个未用-g编译的文件中是_DictionaryTree_getNodeList?
答案 1 :(得分:9)
我遇到了同样的问题,但在我的情况下,将-g
添加到编译器是不够的,所以我按照Manav的建议使用了-ggdb
。
答案 2 :(得分:6)
在我的情况下,问题是gcc
和gdb
之间的版本偏差。
从搜索到这里后,这些答案都不适合我的情况,我发现(因为别名/符号链接/ 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
就可以了。