问题描述
|
有人知道Linux环境下C ++分段错误的调试器吗?如果调试器可以跟踪哪个函数导致了错误,那就足够了。
解决方法
GDB! Linux上还有什么可用?
查阅此指南以开始使用GDB,它是一个很好,简洁且易于理解的教程。
, 还请考虑一些确实需要更改代码的技术:
通过valgrind memcheck工具运行您的应用程序。当您访问错误的地址(例如,释放的指针,未初始化)时,可能会捕获错误-请参见此处。
如果您广泛使用stl / boost,请考虑使用-D_GLIBCXX_DEBUG和-D_GLIBCXX_DEBUG_PEDANTIC进行编译(请参见此处)。这可以捕获诸如使用无效的迭代器,访问向量中的错误索引等错误。
tcmalloc(每个工具来自google)。与其启用调试的版本链接时,它可能会发现与内存相关的问题
甚至更多...
, GDB确实是唯一的选择。有一些GUI \,但是它们几乎都是gdb的包装。查找段错误很容易。确保使用-g -O0进行编译,然后以程序作为参数启动gdb。
在gdb中输入run
要启动您的程序,gdb会在遇到段错误时立即停止它并报告在哪一行。如果您需要完整的回溯,则只需键入bt。要退出gdb,请输入quit。
BTW gdb具有内置帮助,只需键入help。