2

Windows での無効なメモリ アクセスをデバッグする良い方法について、助けていただければ幸いです。Linux 開発者として、私は Valgrind の大ファンです。Duma と eFence でさえ非常に効率的なツールです。しかし、Windowsでは完全に迷っています(WinXP/VS2008)。私は多くのツールを試し、私のプログラムをdumaにリンクしようとしましたが、うまくいきませんでした。

私が抱えているバグの症状は次のとおりです。

  • 一部の特定の構成でリリース モードでクラッシュする (データのサイズのみが変更される)
  • リリース モードでクラッシュしない場合、レポート内のテストの名前はランダムな文字に置き換えられます。(Boost.Testを使用しています)
  • デバッグモードでは何もありません。すべてうまくいきます

これは間違いなくどこかで無効な書き込み/読み取りのように聞こえますが、リリース モードでのデバッグは不可能です。デバッグ モードでクラッシュを再現する必要があります。新しい演算子を再定義し、eFence/Duma の動作を模倣しようとするのが私の最善の策でしたが、それをオーバーライドするのに問題があります。

これまでのところ、私は試しました:

  • Dr.メモリー
  • Gフラグ
  • AppVerifier
  • Duma (malloc/etc をオーバーライドできません。)

この問題を解決しようとしてからしばらく時間が経っているので、誰かが私にヒントをくれたらとてもありがたいです。

前もって感謝します。

4

0 に答える 0