【问题标题】:Compile with -g option but "Single stepping until exit from function main, which has no line number information"使用 -g 选项编译,但“单步执行,直到从函数 main 退出,它没有行号信息”
【发布时间】: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:它向控制台输出一条消息。这不应该被优化掉。

标签: c++ debugging ubuntu gdb


【解决方案1】:

感谢您的回答。我发现出了什么问题。正如 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 版本可以完美运行。

谢谢大家。

【讨论】:

    【解决方案2】:

    使用-g-ggdb 标志编译。

    你的命令应该是

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

    【讨论】:

    • -g-g2-g3 可能是调试的更好选择,因为它包含符号定义。
    【解决方案3】:

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

    参考:

    • "c++ --help=optimizers"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多