Compile with -g option but “Single stepping until

2020-04-07 19:57发布

问题:

I have some trouble with gdb. This is my code in a single file named 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;
}

I used this command to compile this code :

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

Next, I used 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.

What did I do wrong ? I use the -g option but I still got this error.

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

I installed these tools with a classic : sudo apt-get install

Thank you by advance for any answer :-)

回答1:

Thank you for your answers. I found what is wrong. As jcm says my gcc is relatively new. I have update gdb to the last current version which is GNU gdb (GDB) 7.6. Now this works perfectly.

By the way, with the version 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 works perfectly.

Thank you for all of you.



回答2:

Compile using -g and -ggdb flags.

Your command should be

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


回答3:

Try to use '-Og', too. Maybe that will help, because as @KevinDTimm wrote: compiler may optimize it.

Reference:

  • "c++ --help=optimizers"