我使用这个简单的代码来测试我的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
上?
答案 0 :(得分:0)
我能想到的几个原因:
排除上述其他两个选项。刚观察到您的Linux正在 docker 上运行。在这种情况下,您的测试程序是在docker上运行的进程,我假设在本机上调用gdb。您可能需要使用 lxc-attach 将docker附加到gdb。