非常に見つけにくいバグに直面しています。基本的に何が起こるかというと、1 つのスレッドがメモリ ブロックを解放している間に、別のスレッドがまだそれを参照しているということです (これはすべてをさらに難しくする私のコードではありません...)。
私は Windows プラットフォームを初めて使用しますが、Application Verifier と PageHeap を有効にして実行してみました - 問題は、エラーが発生しなくなったことです (おそらくすべてが遅くなったためです - だから私は古典的なレースを扱っています) -調子)。Linux では、この種のバグには Valgrind を使用しようとしますが、おそらくこれは Application Verifier と同じ効果があります (もうバグは見られません..)。
Mac OS XI では、malloc_history を使用してこのバグを追跡します。では、Visual Studio または WinDbg に相当するものはありますか? 私がやりたいことは次のとおりです。
- segfault で壊れるまでプログラムをデバッガーで実行します。
- 解放されたオブジェクトのアドレスを取得し、そこからブロックが実際に削除されたスタックトレースを取得します。
これは、一部の Windows/Visual Studio ツールで可能ですか?