4

我写了一个简单test.cc的如下:

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello world" << endl;
  return 0;
}

我编译了:

g++ -g test.cc -o test.o

我跑并在该行gdb放置了一个断点:"Hello world"

$ gdb test.o
(gdb) b 7
(gdb) c

然后gdb停在这"Hello world"条线上,但是当我跑的时候

(gdb) s

它无法进入该cout功能。所以我的问题是,我怎样才能进入这个cout功能?

4

2 回答 2

6

如果它没有链接到带有调试信息的标准库版本,它就不知道如何进入库;它只能越过它(即运行直到控制权返回到带有调试信息的代码)。

请查阅您系统的文档以了解如何安装标准 C 和 C++ 库的调试版本。

于 2012-04-16T00:45:54.067 回答
1

如果没有调试信息,仍然可以调试它,只是更痛苦。见这里

如果像我一样,你只是想中断对同一函数的其他调用而不深入挖掘,那么在从反汇编获得的函数地址上设置断点并不太难disas

于 2013-10-02T09:47:39.157 回答