Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么GDB不在断点处停止?_C++_Docker_Gdb - Fatal编程技术网

C++ 为什么GDB不在断点处停止?

C++ 为什么GDB不在断点处停止?,c++,docker,gdb,C++,Docker,Gdb,我用这个简单的代码来测试我的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; } 并按如下方式进行调试: (gdb) file out.a (gdb) b main Note: bre

我用这个简单的代码来测试我的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;
}
并按如下方式进行调试:

(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
上停止?

我可以想到两个原因:

  • 我使用的gdb版本是7.0-0.4.16,它按预期工作(即在main停止)。可能它与您拥有的gdb版本有关
  • 我对你的gdb案例中的信息输出感到有点惊讶。它将断点的行号显示为“3”。理想情况下应该是4

排除上述其他两种选择。刚才注意到您的linux运行在一个docker上。在本例中,您的测试程序是一个在docker上运行的进程,我假设gdb是在本机上调用的。您可能需要使用lxc attach将docker连接到gdb,我可以想到以下几个原因:

  • 我使用的gdb版本是7.0-0.4.16,它按预期工作(即在main停止)。可能它与您拥有的gdb版本有关
  • 我对你的gdb案例中的信息输出感到有点惊讶。它将断点的行号显示为“3”。理想情况下应该是4

排除上述其他两种选择。刚才注意到您的linux运行在一个docker上。在本例中,您的测试程序是一个在docker上运行的进程,我假设gdb是在本机上调用的。您可能需要使用lxc-attach

将docker连接到gdb,这可能不是您的主要问题,但
out。对于可执行文件,a
是一个非常糟糕的命名选择。看起来与此问题非常类似。试试
docker run--privileged
@PaulR:这只是著名的
a.out
的一个笑话,我认为GDB不会把它当作一个静态库:)可能不是你的主要问题,但是
out。a
对于一个可执行文件来说是一个非常糟糕的命名选择。看起来与这个问题非常类似。试试
docker-run--privileged
@PaulR:这只是著名的
a.out
的一个笑话,我想GDB不会把它当作静态库:)
(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.