3

Visual Studio の出力ウィンドウでエラーを生成するレポートがあります。

ReportViewer のインスタンスが呼び出される前に、windbg をフックしようとしたので、データのストレージ領域、特にデータソース内の列の名前とレコード セットで返されるデータを調べることができました。

次のように、追加のパーツをロードしました。

.load C:\debug\psscor2\psscor2\amd64\psscor2.dll
.load C:\debug\psscor2\psscor2\amd64\wow64exts.dll

シンボルのパスも設定しました。

windbg がこのように設定されている場合、関心のある ReportViewer スレッドを見つけて、その構造とデータを覗くにはどうすればよいでしょうか?

4

1 に答える 1

3

あなたは非常に一般的な質問をしているので、具体的な答えを出すのは難しいですが、ここでいくつかの点を挙げてみましょう。

これが 32 ビット プロセスの場合は、32 ビット バージョンの Debugging Tools for Windows を入手し、代わりにそれを使用する必要があります。

また、psscor2.dll を sos.dll と一緒に (つまり、.NET Framework パスに) ドロップすると、次のことができます。

.loadby psscor2 mscorwks

( .NET 4 以降を使用mscorwksしている場合は に置き換えます)。clr

これにより、mscorwks.dll と同じ場所から psscor2 が取得されます。(また、psscor は現在 .NET 4.5 では使用できないため、その場合は代わりに sos.dll を使用する必要があります)。

オブジェクトを検査するには、オブジェクトをヒープ上に配置する必要があります。この!dumpheap -statコマンドは、ヒープ全体の概要を示します。!dumpheap -mt <MT of type>特定のタイプのオブジェクトをダンプするために使用できます。コマンドを使用して、特定のタイプの MT を見つけることができます!name2ee

ヒープ上の個々のオブジェクトの場所を取得したら、!do(DumpObject) コマンドを使用してこれらを調べることができます。

于 2012-12-20T16:53:24.850 に答える