Elp*_*rto 72 c++ debugging segmentation-fault
我正在为Windows和Unix编写一个跨平台的C++程序.在Window端,代码将编译并执行没有问题.在Unix方面,它会编译然而当我尝试运行它时,我得到一个分段错误.我最初的预感是指针存在问题.
找到并修复分段错误错误的好方法是什么?
Svi*_*ack 107
编译您的应用程序-g
,然后您将在二进制文件中有调试符号.
使用gdb
打开GDB控制台.
file
在控制台中使用并传递应用程序的二进制文件.
使用run
并传入应用程序需要启动的任何参数.
做一些导致分段错误的事情.
键入bt
在gdb
控制台得到的堆栈跟踪分割故障.
log*_*og0 16
在问题出现之前,尽量避免使用它:
使用适当的工具进行调试.在Unix上:
最后我会推荐通常的事情.程序的可读性,可维护性,清晰性和整洁程度越高,调试就越容易.
在 Unix 上,您可以valgrind
用来查找问题。它免费且功能强大。如果你更愿意自己做,你可以重载new
anddelete
操作符来设置一个配置,0xDEADBEEF
在每个新对象之前和之后都有 1 个字节。然后跟踪每次迭代发生的情况。这可能无法捕获所有内容(您甚至不能保证触及这些字节),但它过去在 Windows 平台上对我有用。