gdb没有显示行源

时间:2012-09-05 17:12:54

标签: gdb

GDB没有向我显示next / stop后的行源,只显示行号和源文件,如下所示:

(gdb) n
7   in test/test.c

虽然我希望它显示当前行,如下所示:

(gdb) next
17        char * good_message = "Hello, world.";

.gdbinit中的任何设置可能有助于我这样做吗?

2 个答案:

答案 0 :(得分:3)

  

而我希望它显示当前行,就像这样

在许多平台上,例如ELF,编译器会记录源路径(在您的情况下为test/test.c)和编译目录,允许GDB显示源,无论您在哪个目录中调用它。

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

答案 1 :(得分:2)

可能我的答案可能不是一个完美的解决方案,但编译源程序的方式很重要。例如,在我的情况下,如果您执行g++ fib.cpp -o fib然后尝试运行gdb fib,则无法使用list打印源代码。使用调试标志g++ -g fib.cpp -o fib,然后使用gdb运行解决了我的问题。