2009-08-20 11 views
12

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

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

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

私はこの情報がメモリのどこかで利用可能であると仮定しますが、どこから見えるのかわかりません。どんな入力も高く評価されます。

+0

なぜダウン票ですか?私の質問を改善するチャンスがあるので説明してください。ありがとう。 –

答えて

-1

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

+2

ここでNDependがどのように役立つのか分かりません。私は利用可能なすべてのソースコードを持っているので、必要に応じて実装者を見つけることができます。私は実行時にメモリ内のインスタンスを見つけることに興味があります。 –

0

あなたはそれがあまりにもメソッドテーブルが表示されます!dumpheap型IFaces

を試してみました。そこから深く掘り下げることができます。

+3

いいえ、これは、IFacesがその名前の一部であるタイプのインスタンスをリストします。 typeパラメータは型名に正規のテキストマッチを使用するため、インタフェースとは何の関係もありません。 –

0

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

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

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

1

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

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

  1. は一つだけ トップレベルのオブジェクトのインスタンスを持っていることを確認している、またはあなたが正確にどのように多くのトップレベルのインスタンスを知って があります。 (静的な値についても忘れないでください)
  2. 情報の関連ビットを調べるためにリフレクションを使用する方法を解説します。
  3. 必要なときに読みやすい形式で表示します。
+0

情報はソースコードで入手できます。私はちょうどデバッグ中に情報を掘り出す方法を見つけたいと思うでしょう。ランタイムはこの情報をどこかに持つ必要があるため、詳細を掘り起こすのは「ちょうど」です。とにかくあなたの入力に感謝します。 –

関連する問題