gdb不显示行源

gdb不显示行源,gdb,Gdb,GDB在next/stop之后不向我显示行源,只显示行号和源文件,如下所示: (gdb) n 7 in test/test.c (gdb) next 17 char * good_message = "Hello, world."; 而我希望它显示当前行,如下所示: (gdb) n 7 in test/test.c (gdb) next 17 char * good_message = "Hello, world."; .gdbinit中的任何设置可以

GDB在next/stop之后不向我显示行源,只显示行号和源文件,如下所示:

(gdb) n
7   in test/test.c
(gdb) next
17        char * good_message = "Hello, world.";
而我希望它显示当前行,如下所示:

(gdb) n
7   in test/test.c
(gdb) next
17        char * good_message = "Hello, world.";
.gdbinit中的任何设置可以帮助我完成此操作吗

而我希望它显示当前行,如下所示

在许多平台上,例如
ELF
,编译器记录到源代码的路径(
test/test.c
,在您的例子中),以及编译目录,从而允许GDB显示源代码,而不管您在哪个目录中调用它


但许多平台灵活性较差,并且没有地方记录编译目录。在这样的平台上(例如AIX),您必须在编译目录中启动GDB,或者使用
目录
命令告诉它在哪里查找源代码。

我的答案可能不是一个完美的解决方案,但编译源程序的方式很重要。例如,在我的例子中,如果执行
g++fib.cpp-o fib
,然后尝试运行
gdb fib
,它将不会使用
列表打印源代码。使用调试标志
g++-g fib.cpp-o fib
,然后用gdb运行解决了我的问题。

可能是我的一个复制品,它从源代码(
dpkg buildpackage
)构建debian包
exim4
),并且它知道到源代码的路径,编译目录。但不知何故,编译目录并不存在,我必须进入到源代码路径成功解析的目录(放置可执行文件的地方),它才能找到源代码。顺便说一下,当到达断点时,my
gdb
说,“exim.c:没有这样的文件或目录。”不仅仅是“1415 in exim.c”,似乎问题在于我试图走捷径。运行
dpkg buildpackage-T clean和&dpkg buildpackage-T build
而不是只运行
dpkg buildpackage
。因为在后一种情况下,存在编译目录。