有没有人知道Linux环境下C ++分段错误的好调试器?如果调试器可以跟踪哪个函数导致错误,那就足够了。
答案 0 :(得分:4)
还要考虑一些代码更改需要的技术:
通过 valgrind memcheck工具运行您的应用。当您访问错误的地址时(例如,释放指针,未初始化),可能会发现错误 - 请参阅here。
如果您使用extensievly stl / boost ,请考虑使用-D_GLIBCXX_DEBUG和-D_GLIBCXX_DEBUG_PEDANTIC进行编译(请参阅here)。这可以捕获诸如使用无效迭代器,访问向量中的错误索引等错误。
tcmalloc (来自google per tool)。当与其启用调试的版本链接时,它可能会发现与内存相关的问题
偶more ...
答案 1 :(得分:3)
GDB!还有什么在Linux上可用?
检查this是否启动了GDB,这是一个简洁易懂的教程。
答案 2 :(得分:2)
GDB确实是唯一的选择。有一些GUI,但它们几乎都是gdb的包装器。找到段错误很容易。确保使用-g -O0进行编译,然后以程序作为参数启动gdb。
在gdb类型中运行
要启动程序运行,gdb会立即停止它,因为它遇到了段错误并报告了哪一行。如果你需要一个完整的回溯,那么只需键入bt。要退出gdb,请输入quit。
BTW gdb有一个帮助版本,只需输入帮助。