我已经准备好使用PROOF运行我的代码。
每当我独立运行代码时,我都可以正常工作,当我激活证明时,我的代码会因分段错误而崩溃。
使用 GDB,我能够准确地知道它崩溃的位置:当我尝试跟随指向对象的指针时。这让我认为这个指针(我绝对确定它之前是有效的)是无效的,我不知道为什么会这样。
还有其他选择吗?我可以跟踪那个指针,这样我就知道它是在哪里发布的吗?
我已经准备好使用PROOF运行我的代码。
每当我独立运行代码时,我都可以正常工作,当我激活证明时,我的代码会因分段错误而崩溃。
使用 GDB,我能够准确地知道它崩溃的位置:当我尝试跟随指向对象的指针时。这让我认为这个指针(我绝对确定它之前是有效的)是无效的,我不知道为什么会这样。
还有其他选择吗?我可以跟踪那个指针,这样我就知道它是在哪里发布的吗?
将valgrind
memcheck 工具与--leak-check=summary --track-origins=yes
.
这显示了无效的内存访问(分段错误)以及它们被释放的位置。