12

特定のインターフェイスを実装する型のヒープで現在のすべてのインスタンスを見つける方法を探しています (WinDbg のデバッグ中)。インターフェイスのインスタンスを作成できるという意味ではインターフェイスは型ではないため、ヒープを検査しても明らかに表示されません。つまり!dumpheap、ここではほとんど役に立ちません。

ただし、!dumpmt -md特定の MT では、の数がリストさIFacesIFaceMapます。私が知る限り、この数値は、型が 1 つ以上のインターフェイスを実装しているかどうかを示しているようです。型でフラグ メソッドを使用する場合-mdも一覧表示されます。

残念ながら、!dumpmd私が知る限り、与えられたメソッドをインターフェイスに関連付けていないため、これを使用して実装されたインターフェイスを確立することはできません。

この情報はメモリのどこかで入手できると思いますが、どこを見ればよいかわかりません。どんな入力でも大歓迎です。

4

4 に答える 4

1

数年前、私はこのような情報を切望していました。アプリを起動するためのあいまいなオプションを使用した場合にのみ表示されるツリービューを作成することになりました。「更新」をクリックすると、リフレクションを使用してルート クラス インスタンスのすべてのプロパティを移動します。コレクションであるプロパティまたは他のプロパティを保持しているプロパティが見つかった場合、それらを再帰的に呼び出します。その結果、その時点でのインスタンス データのツリーが閲覧可能になりました。

このアプローチの主なポイントは、

  1. 最上位のオブジェクト インスタンスが 1 つだけであることを確認するか、最上位のインスタンスの数と種類を正確に把握してください。(また、静的な値についても忘れないでください。)
  2. リフレクションを使用して、関連する情報を調べる方法を理解してください。
  3. 必要なときに読みやすい方法で表示します。
于 2009-08-24T21:32:55.523 に答える
1

やってみました

!dumpheap タイプの Ifaces

メソッドテーブルも表示されます。そこからさらに掘り下げることができます。

于 2009-08-22T07:51:49.233 に答える
0

あなたの最善の策は、あなたがやりたいことのいくつかを行うCrack.NETから始めることです(ただし、wpfおよびwinformsアプリを対象としています)。このプロジェクトはオープン ソースであるため、ソースから必要な情報を取得するために使用される方法を導き出すことができるはずです。メモリ内オブジェクトの詳細も検査できる Reflector 用のプラグインがあります。

プロジェクトページ: http: //joshsmithonwpf.wordpress.com/cracknet/

CodePlex: http://cracknetproject.codeplex.com/

于 2009-08-22T19:52:51.070 に答える
-1

独自のプログラムを作成する必要がない場合は、NDependを試してください。

于 2009-08-21T01:10:38.570 に答える