Windows での無効なメモリ アクセスをデバッグする良い方法について、助けていただければ幸いです。Linux 開発者として、私は Valgrind の大ファンです。Duma と eFence でさえ非常に効率的なツールです。しかし、Windowsでは完全に迷っています(WinXP/VS2008)。私は多くのツールを試し、私のプログラムをdumaにリンクしようとしましたが、うまくいきませんでした。
私が抱えているバグの症状は次のとおりです。
- 一部の特定の構成でリリース モードでクラッシュする (データのサイズのみが変更される)
- リリース モードでクラッシュしない場合、レポート内のテストの名前はランダムな文字に置き換えられます。(Boost.Testを使用しています)
- デバッグモードでは何もありません。すべてうまくいきます
これは間違いなくどこかで無効な書き込み/読み取りのように聞こえますが、リリース モードでのデバッグは不可能です。デバッグ モードでクラッシュを再現する必要があります。新しい演算子を再定義し、eFence/Duma の動作を模倣しようとするのが私の最善の策でしたが、それをオーバーライドするのに問題があります。
これまでのところ、私は試しました:
- Dr.メモリー
- Gフラグ
- AppVerifier
- Duma (malloc/etc をオーバーライドできません。)
この問題を解決しようとしてからしばらく時間が経っているので、誰かが私にヒントをくれたらとてもありがたいです。
前もって感謝します。