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

qltillow  于 2022-11-12  发布在  其他
关注(0)|答案(8)|浏览(174)

我已经使用gcc 4.4.1使用标志-g编译了我的C程序,但是当我尝试在gdb 7.0版中单步执行我的一个函数时,我得到了以下消息:

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

谁能告诉我为什么会这样?

yeotifhr

yeotifhr1#

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

yks3o0rb

yks3o0rb2#

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

pvcm50d1

pvcm50d13#

在我的案例中,问题是gccgdb之间的版本偏差

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

fhity93d

fhity93d4#

我也有这个错误信息,但我的问题来源是不同的。如果任何人仍然有任何问题,请确保您的文件中有#include <stdio.h>,并在stdio.h周围有适当的括号(如果我在stdio.h周围有文本信息,它就不会显示出来)。

gev0vcfq

gev0vcfq5#

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

关于源文件是否可以在运行时加载到GDB中的任何想法都是很好的解决方案...通过将行Map到地址:D.

nfeuvbwi

nfeuvbwi6#

我遇到这个问题是因为我在调试共享库时没有使用调试结束状态将LD_LIBRARY_PATH指向正确的位置。
您可以使用

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

希望这对某些人有帮助

3zwtqj6y

3zwtqj6y7#

我遇到了同样的麻烦,尽管我已经在用-g2编译了。把它改成-g3就成功了。

j9per5c4

j9per5c48#

我使用的是GBD 12,我不能使用这些标志和选项中的任何一个,也不能调试.exe文件,所以我使用的是makefile

相关问题