2012-05-09 12 views
11

windbgを使用してw3wpメモリダンプを解析しようとしていますが、スタックオーバーフローのためw3wpプロセスがクラッシュしています。私はpsscor4.dllをロードし、!clrstackを発行してコールスタックを取得しました。しかし、私はまた、パラメタがメソッドに渡されることを知りたい。 "!clrstack -p"または "!clrstack -a"を発行した場合、すべてのパラメータおよびローカル変数に対してというデータがない<が得られます。 考えられる理由は、<は、パラメータとローカル変数の実際の値ではなく、>のデータがありません。!clrstack -pコールスタックのメソッドのパラメータの値を与えない

+0

「私はパラメータとローカル変数の実際の値の代わりに何を得ているのですか?」という質問をする時点まで理解していると思います。あなたは言い換えることができますか? –

+0

@dtryon、今質問を更新しました。それを指摘してくれてありがとう。 – arul

答えて

9

リリースビルドを実行している場合は、ローカルとパラメータが最適化され、レジスタに保存されるため、通常はそれを追跡できません。本当に必要な場合は、JITコンパイルされたコードを見てレジスタ内の値を見つけることができますが、それは多くの本を保管する必要があります。

14

これは、最適化されたコードのデバッグの楽しさです。 !sosex.mdvを使用する場合は、少なくともあなたのlocals/argsのデータ型を取得します。次に、!sos.dsoまたは!sosex.mdsoを実行して、スタック上のオブジェクトの型を確認することができます。このように引数を追跡することは通常困難ではありませんが、必ずしも機能するとは限りません。

関連する問題