0

非常に見つけにくいバグに直面しています。基本的に何が起こるかというと、1 つのスレッドがメモリ ブロックを解放している間に、別のスレッドがまだそれを参照しているということです (これはすべてをさらに難しくする私のコードではありません...)。

私は Windows プラットフォームを初めて使用しますが、Application Verifier と PageHeap を有効にして実行してみました - 問題は、エラーが発生しなくなったことです (おそらくすべてが遅くなったためです - だから私は古典的なレースを扱っています) -調子)。Linux では、この種のバグには Valgrind を使用しようとしますが、おそらくこれは Application Verifier と同じ効果があります (もうバグは見られません..)。

Mac OS XI では、malloc_history を使用してこのバグを追跡します。では、Visual Studio または WinDbg に相当するものはありますか? 私がやりたいことは次のとおりです。

  • segfault で壊れるまでプログラムをデバッガーで実行します。
  • 解放されたオブジェクトのアドレスを取得し、そこからブロックが実際に削除されたスタックトレースを取得します。

これは、一部の Windows/Visual Studio ツールで可能ですか?

4

1 に答える 1

-1

この問題を修正することから始めます。

「あるスレッドがメモリブロックを解放している間に、別のスレッドがまだそれを参照している」

于 2013-06-20T17:26:35.047 に答える