c ++什么是分割错误的好调试器?

时间:2011-06-18 05:13:14

标签: c++ debugging

有没有人知道Linux环境下C ++分段错误的好调试器?如果调试器可以跟踪哪个函数导致错误,那就足够了。

3 个答案:

答案 0 :(得分:4)

还要考虑一些代码更改需要的技术:

  1. 通过 valgrind memcheck工具运行您的应用。当您访问错误的地址时(例如,释放指针,未初始化),可能会发现错误 - 请参阅here

  2. 如果您使用extensievly stl / boost ,请考虑使用-D_GLIBCXX_DEBUG和-D_GLIBCXX_DEBUG_PEDANTIC进行编译(请参阅here)。这可以捕获诸如使用无效迭代器,访问向量中的错误索引等错误。

  3. tcmalloc (来自google per tool)。当与其启用调试的版本链接时,它可能会发现与内存相关的问题

  4. more ...

答案 1 :(得分:3)

GDB!还有什么在Linux上可用?

检查this是否启动了GDB,这是一个简洁易懂的教程。

答案 2 :(得分:2)

GDB确实是唯一的选择。有一些GUI,但它们几乎都是gdb的包装器。找到段错误很容易。确保使用-g -O0进行编译,然后以程序作为参数启动gdb。

在gdb类型中运行

要启动程序运行,gdb会立即停止它,因为它遇到了段错误并报告了哪一行。如果你需要一个完整的回溯,那么只需键入bt。要退出gdb,请输入quit。

BTW gdb有一个帮助版本,只需输入帮助。