133

背景: 私は 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

...そして、「「g」に実行可能なデバッグ対象がありません」という応答を受け取りました

SOS.dll (C:\Windows\Microsoft.NET\Framework\v4.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 を使用してダンプ ファイルを開こうとしています。

4

4 に答える 4

207

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

.loadby sos clr

また、64 ビットを使用している場合は、 32 ビット アプリをデバッグするために、32 ビット バージョンのDebugging Tools for Windowsもインストールする必要があります。サイド バイ サイドでインストールされるため、32 ビット バージョンと 64 ビット バージョンの両方を同じマシンにインストールしても問題ありません。

SOS.dll をコピーしないことをお勧めします。SOS はフレームワークの正確なバージョンと一致する必要があるため、 を使用してフレームワーク ディレクトリからロードする限り、.loadby準備は完了です。

于 2010-12-07T05:31:26.477 に答える
18

WinDbg コマンド 'g' は [続行] を意味します。

ダンプファイルを開いているため、「続行」する方法はありません。プロセスメモリのみが含まれています。

したがって、プロセスが実行されていないため、「「g」に実行可能なデバッグ対象エラーがありません」というメッセージは論理的です。

正しいバージョンの SOS をロードするには、.NET バージョンに応じて次のコマンドを使用します。

.NET 4 以降 .loadby sos

.NET 3.5 および 2 .loadby sos mscorwks

.NET 1.0 および 1.1 .load clr10\sos

于 2014-07-29T11:21:31.023 に答える
0

SOS の読み込み中に同様の問題が発生し、「指定されたモジュールが見つかりませんでした」というメッセージが表示されました。別の解決策を思いついたので、ここの解決策が役に立たない場合は、これを試してください。

.loadby sos clr - 指定されたモジュールが見つかりませんでした

于 2016-08-10T15:42:07.803 に答える