マネージド C++ コード内のメモリ破損を見つけるためのツール?

StackOverflow https://stackoverflow.com/questions/34973

  •  09-06-2019
  •  | 
  •  

質問

画像の圧縮にオープンソースの C++ 圧縮ライブラリを使用している .NET アプリケーションがあります。マネージド C++ 経由で C++ ライブラリにアクセスしています。圧縮中にヒープの破損が発生しています。_CrtIsValidHeapPointer の呼び出しで、圧縮後のクリーンアップ中に free() の呼び出しでエラーが見つかりました。

私の質問は、この問題の診断に役立つ Purify などのツールはありますか、また、マネージド コードとアンマネージド コードを組み合わせて作業するときにヒープ破損の原因は何ですか?デバッガーで例外をキャッチしましたが、問題の解決策を見つけるのに役立つ他のツールがあれば便利です。

役に立ちましたか?

解決

ネイティブ コードでは、メモリ内の同じ場所で破損が常に発生する場合は、 データブレークポイント メモリが変更されたときにデバッガを中断します。残念ながら、マネージド C++ 環境ではデータ ブレークポイントを設定できません。これは、おそらく GC によってメモリ内のオブジェクトが移動される可能性があるためです。

これが役立つかどうかはわかりませんが、うまくいけば、正しい方向に導かれます。

他のヒント

*nix には、と呼ばれるツールがあります ヴァルグリンド メモリ リークやメモリ破損などのメモリの問題に対処するために使用します。

Rational Purify for Windows .NET をサポートしているので、それが使用できると思いますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top