1. ホーム
  2. .net-4.0

[解決済み] WinDbgでSOSを読み込めない

2022-06-23 14:38:06

質問

背景 私は WinDbg の初心者で、初めてそれを実行しようとしています。私は、Windows Server 2008 (x86)上のIIS 7でホストされている実行中のASP.NET 4サイトから取得し、私のローカルマシンにダウンロードしたメモリダンプを調査したいと思います。

をインストールしました。 デバッギング ツール をインストールし、WinDbg を初めて起動し、クラッシュ ダンプを開きました。私は ファイル|シンボル・ファイル・パス に設定し、パスを *srv*c:\symbols*http://msdl.microsoft.com/download/symbols* に設定し、すべてのシンボルがロードされるのを待ちました。

SOSをロードしようとしたとき、問題にぶつかりました。まず、以下のコマンドを試してみました...。

.loadby sos mscorwks

...そして、次のような応答が返ってきました。 Unable to find module 'mscorwks' .

Webを探し回った結果、以下のコマンドを実行してmscorwksをロードしてみたところ...。

sxe ld mscorwks.dll
g

...そして、quot;No runnable debuggees error in 'g'" という応答を受け取りました。

SOS.dll (from C:\WindowsMicrosoft.NETFrameworkv4.0.30319) をWinDbgディレクトリにコピーして、試してみました。

.load sos

...そしてエラーを受け取りました...

The call to LoadLibrary(sos) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

どうすればいいのかよくわからない。ただ、SOSをロードして、このダンプファイルを掘り下げたいだけなんです。どんな助けでも、非常に感謝されます。

参考までに...私は、64 ビット バージョンの Windows 7 で、64 ビット バージョンの Windbg を使用して、ダンプ ファイルを開こうとしています。

どのように解決するのですか?

CLR ランタイム dll の名前を変更し clr.dll そのため、正しいバージョンのSOSをロードするために、.NET 4で .loadby コマンドを調整する必要があります。すなわち

.loadby sos clr

また、64ビット版であれば、32ビット版の Windows 用デバッギング ツール の 32 ビット版もインストールしてください。これらは並行してインストールされるので、同じマシンに 32 ビット版と 64 ビット版の両方があっても問題はありません。

私は SOS.dll をコピーしないように助言します。SOS はフレームワークの正確なバージョンと一致する必要があるので、フレームワーク ディレクトリから .loadby を使用してフレームワークディレクトリからロードする限り、あなたはすべて設定されています。