【发布时间】:2017-01-24 10:04:57
【问题描述】:
我用这个简单的代码来测试我的 GDB(GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1),我的 linux 在 docker 中运行,代码是:
// hello.cc
#include <iostream>
int main() {
std::cout << "hello world!" << std::endl;
}
我编译它:
$ g++ -g -o out.a hello.cc
并像这样调试它:
(gdb) file out.a
(gdb) b main
Note: breakpoint 1 also set at pc 0x40084a.
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000040084a in main() at hello.cc:3
(gdb) r
hello world!
During startup program exited normally.
为什么 gdb 没有在 main 上停止?
【问题讨论】:
-
可能不是您的主要问题,但
out.a是一个非常糟糕的可执行文件命名选择。 -
看起来非常类似于这个问题stackoverflow.com/q/34856092/72178。试试
docker run --privileged。 -
@PaulR:只是对著名的
a.out的一个玩笑,我认为GDB 不会把它当作一个静态库:)