为什么我不能在GDB中进入C ++ cout标准库函数?

时间:2012-04-16 00:43:16

标签: c++ gdb

我写了一个简单的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函数?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

如果没有调试信息,它仍然可以调试它,只是更加痛苦。请参阅here

如果like me,你只想打破对同一函数的其他调用而不再深入挖掘,那么在用{{反汇编'获得的函数地址上设置断点并不困难。 1}}。