使用gdb进行C ++特定的调试技巧

时间:2010-10-20 14:57:04

标签: c++ debugging gdb

使用gdb调试C ++程序有哪些你最喜欢的技巧?

对所有技巧感兴趣但也

  1. 如何在gdb中调用对象上的方法(可能是虚拟的)

  2. 检查STL对象(相当打印)

  3. 使用continue

  4. 阻止gdb进入STL代码
  5. 处理内联,线程,tcmalloc(或自定义分配器)

  6. 在不同会话中保留gdb命令的历史记录

3 个答案:

答案 0 :(得分:3)

调试C ++时尝试DDD; DDD可以动态加载共享库的源代码,并在调试时显示多个变量。

答案 1 :(得分:2)

1

set print object

这样可以通过查看vtable来评估对象层次结构。所以你可以看到基类的引用/指针的类型。

2

获取系统库的调试信息或未提取的文件夹(最重要的是:pthread和libstdc ++),因为否则调试多线程应用程序在gdb中无法正常工作。

答案 2 :(得分:0)

因为我发现如何使用〜/ .gdbinit中的Hook来美化GDB的输出(列表,回溯等),我不能没有那个......

这是一个blogentry,它展示了如何美化代码输出并在注释之间添加一些“分隔符”: Beautify GDB

我也美化了我的回溯,非常有用,可以找到现在发生错误的位置......也许我会在我访问它们时上传所需的文件(我现在不在工作)< / p>