c ++ gdb断点未命中

时间:2016-01-09 10:47:34

标签: c++ boost gdb breakpoints

我完全改变了帖子。 因为我在韩国军队工作。 但韩国军队互联网计算机禁止上传文件。 所以我真的上传了我的源代码。但我不能。 所以我尝试使用gdb调试非常简单的程序。 但它仍然无效。

我的系统是

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

在云IDE中称为" nitrous"

和g ++,gdb版本是

g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
GNU gdb (GDB) 7.8

我编写了非常简单的代码:simple.cpp

#include <iostream>

int main(){
   std::cout << "Hello World!" << std::endl;
   return 0;
}

使用&#34; -g&#34;编译和gdb执行

nitrous@ubuntu-108903:~/code$ g++ -g simple.cpp -o simple
nitrous@ubuntu-108903:~/code$ gdb simple

并设置break main并运行

Reading symbols from simple...done.
(gdb) break main
Breakpoint 1 at 0x400861: file simple.cpp, line 4.
(gdb) run
Starting program: /home/nitrous/code/simple
Hello World!
During startup program exited normally.

即使是非常简单的helloworld程序也无法正常工作。 只是打印出来在启动程序中退出。

2 个答案:

答案 0 :(得分:0)

  

我设定了一个断点,但它没有被击中。什么问题?

最可能的问题是您的程序在到达main之前终止。 (典型的动态链接程序在到达main之前将执行数百个指令。)

在GDB下运行程序,直到GDB以SIGSEGV停止。执行GDB where命令。注意main不在堆栈中。

一旦确认main不在堆栈中,请提出另一个问题(假设您仍然不理解崩溃的原因)。

答案 1 :(得分:0)

我猜gdb由于某种原因未能设置断点。尝试用sudo运行gdb。 顺便说一下,你能为strace -f -o syscall.txt gdb ./simple.out生成的精灵和grep运行strace吗?它应该类似于{{1}}。