valgrind是否会阻止我想要调试的段错误?

And*_*imm 6 debugging segmentation-fault heap-corruption

我想确定是什么导致了段错误,我正在尝试使用valgrind来做到这一点.

https://gist.github.com/4349869是一个要点,当我运行没有valgrind的东西时,我得到一个段错误,但是当我使用valgrind时,我没有得到段错误.(我重复了几次,结果相同)

这是否意味着该bug是一个heisenbug,当我使用valgrind时不会发生,因此valgrind在这里没有任何用处?

ks1*_*322 5

这是否意味着该错误是当我使用valgrind时不会发生的heisenbug,因此valgrind在这里没有任何用处吗?

不,您仍然应该使用Valgrind并修复所有报告的错误。您描述的行为相当普遍,并记录在Valgrind FAQ中

当程序在Valgrind下运行时,其环境与本地运行时略有不同。例如,内存布局不同,线程的调度方式也不同。

在大多数情况下,这没有什么区别,但是可以做到,特别是如果您的程序有错误。例如,如果您的程序由于错误地访问了不可寻址的内存而崩溃,则在Valgrind下运行时,该内存可能不会不可寻址。或者,如果您的程序有数据争用,则这些争用可能不会显示在Valgrind下。