Windbg を使用して w3wp メモリ ダンプを分析しようとしていますが、スタック オーバーフローが原因で w3wp プロセスがクラッシュしていることがわかりました。psscor4.dll をロードし、!clrstack を発行してコール スタックを取得しました。しかし、メソッドに渡されるパラメーターも知りたいです。「!clrstack -p」または「!clrstack -a」を発行すると、すべてのパラメーターとローカル変数に対して <no data> が取得されます。パラメータとローカル変数の実際の値ではなく、なぜ <no data> を取得しているのでしょうか?
4641 次
2 に答える
15
これが、最適化されたコードをデバッグする喜びです。!sosex.mdv を使用すると、少なくともローカル/引数のデータ型を取得できます。次に、!sos.dso または !sosex.mdso を実行して、スタック上のオブジェクトとその型を確認できます。通常、この方法で引数を追跡することはそれほど難しくありませんが、常に機能するとは限りません。
于 2012-05-09T16:54:36.577 に答える
10
リリース ビルドを実行している場合、通常、ローカルとパラメーターは最適化されてレジスターに格納されるため、それらを追跡することはできません。本当に必要な場合は、JIT コンパイル済みコードを見て、レジスター内の値を見つけることができますが、それには多くの簿記が必要になる場合があります。
于 2012-05-09T14:54:19.457 に答える