C 为什么我会得到这个信息;单步执行直到退出。没有行号信息”的;在GDB中?

C 为什么我会得到这个信息;单步执行直到退出。没有行号信息”的;在GDB中?,c,gcc,gdb,C,Gcc,Gdb,我已经使用GCC4.4.1和-g标记编译了我的C程序,但是当我尝试在gdb 7.0版中单步执行我的一个函数时,我得到了以下消息: "Single stepping until exit from function _DictionaryTree_getNodeList, which has no line number information." 有人能告诉我为什么会发生这种情况吗?只是猜测,但是另一个文件中的“DictionaryTree”getNodeList不是用-g编译的吗?我也有同

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

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

有人能告诉我为什么会发生这种情况吗?

只是猜测,但是另一个文件中的“DictionaryTree”getNodeList不是用-g编译的吗?

我也有同样的问题,但在我的例子中,向编译器添加
-g
是不够的,所以我使用了Manav建议的
-ggdb

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

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

我也有此错误消息,但问题的来源不同。若有人仍然有任何问题,请确保您的文件中有
#包含
,并在
stdio.h
周围加上适当的括号(若我有
stdio.h
,文本消息将不会显示),问题是
gcc
gdb
之间的版本偏差


在通过搜索登陆这里后,这些答案都不符合我的情况,我发现(由于别名/symlinks/
Makefile
/environment变量),我无意中使用了一个较新的GCC(4.8.x)和一个较旧的GDB(7.2)升级到较新版本的GDB(7.8)修复了该问题。出于某种原因,使用较新的GCC和较旧的GDB不起作用。

我遇到了这个问题,因为我在调试共享库时,没有将LD_library_路径指向具有调试结束状态的正确位置

你可以用

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH
export LD\u LIBRARY\u PATH=:$LD\u LIBRARY\u PATH

希望这对某人有所帮助

尽管我已经在使用
-g2
编译,但我还是遇到了同样的问题。把它改成
-g3
就成功了。

是的,我在读你的答案之前就猜出来了。猜得好;)如果您要编译多个文件,最好在gcc选项标志中使用Makefile和add-ggdb。@Manav MN是的,这就是我的命令,但我有两个不同的命令-一个用于编译,一个用于链接,我忘了将标志添加到用于编译的命令中(我想这实际上是我唯一需要它的命令)。。。。但是(只是)现在我看到以前对其他几乎相同的问题的回答有这个答案——例如,和。后者包括关于原因的信息(矮星不兼容性)。到处都是选票!我注释掉了我的主目录中几乎所有的代码。在main的最后一行之后,gdb转到main的第一行,然后收到了这个奇怪的消息。我尝试使用这个CXXFLAG=“-ggdb-O0”,仍然收到相同的错误消息。尝试过的gdb gcc 7.3和8.2都遇到了相同的问题。