4

.net マネージド アプリケーションが、InterOP を介してアンマネージド コンポーネントと相互作用するとします。メモリの問題をデバッグする必要がある場合。管理されていないコンポーネントが正確にどこにメモリを割り当てますか? GCで使用されているのと同じヒープですか(私は疑問です)、それとも他の領域ですか? Windbg のデバッグを行っていますが、!dumpheap のような SoS コマンドを介してアンマネージ コンポーネントによる割り当てを確認できるかどうか疑問に思っています。

4

1 に答える 1

3

!heapWindbg では、ネイティブ ヒープ メモリの検査に使用できます。GC (マネージド) ヒープは、ネイティブ コード ヒープの使用法とは切り離されていますが、あるレベルでは、マネージド ヒープは (CLR 内で) 1 つ以上のネイティブ ヒープにマップする必要があると想定しています。

SoS は純粋にマネージ コードのデバッグに使用されます。WinDbg は何よりもまずネイティブ コードのデバッグ ツールです。

umdh.exeも役立つかもしれませんが、混合モードのアプリでこれを試したことはありません。

于 2011-06-23T21:07:37.913 に答える