【发布时间】:2013-12-09 15:45:54
【问题描述】:
我在使用 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 选项,但仍然出现此错误。
配置:
- 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
提前感谢您的任何回答:-)
【问题讨论】:
-
只是一个猜测,但我猜 gcc 优化了你的代码(因为它并没有真正做任何事情)
-
相对较新的
gcc和旧的gdb:S。我会尝试更新gdb -
Kevin:它向控制台输出一条消息。这不应该被优化掉。