使用-g选项进行编译,但是“单步执行直到从main函数退出,没有行号信息”

我有一些与GDB的麻烦。 这是我的代码在一个名为main.cpp的文件中

#include <iostream> void myfunc(); int main(){ char msg[] = "Hello World!"; myfunc(); std::cout << msg << std::endl; return 0; } void myfunc(){ int boo = 16; } 

我用这个命令来编译这段代码:

 g++ -g -Wall main.cpp -o foo 

接下来,我使用gdb

 $ gdb foo (gdb) start Temporary breakpoint 1 at 0x80487c3 Starting program: /home/laptop/workspace/foo Temporary breakpoint 1, 0x080487c3 in main () (gdb) s Single stepping until exit from function main, which has no line number information. Hello World! __libc_start_main (main=0x80487c0 <main>, argc=1, ubp_av=0xbffff3a4, init=0x80488b0 <__libc_csu_init>, fini=0x8048920 <__libc_csu_fini>, rtld_fini=0xb7fed280 <_dl_fini>, stack_end=0xbffff39c) at libc-start.c:258 258 libc-start.c: No such file or directory. 

我做错了什么 ? 我使用-g选项,但我仍然有这个错误。

configuration:

  • GDB:GNU gdb(Ubuntu / Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04
  • GCC:g ++(Ubuntu 4.8.1-2ubuntu1〜12.04)4.8.1

我安装了一些经典的工具:sudo apt-get install

预先感谢您的回答:-)

谢谢您的回答。 我发现什么是错的。 正如jcm所说,我的gcc是相对较新的。 我已经更新gdb到最新的当前版本是GNU gdb(GDB)7.6。 现在这个完美的作品。

顺便说一下,用g ++(Ubuntu / Linaro 4.6.4-1ubuntu1〜12.04)4.6.4,gdb(Ubuntu / Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04完美的工作。

谢谢大家。

编译使用-g-ggdb标志。

你的命令应该是

 g++ -g -ggdb -Wall main.cpp -o foo 

也尝试使用“-Og”。 也许这将有所帮助,因为@KevinDTimm写道:编译器可能会优化它。

参考:

  • “c ++ –help = optimizers”