を使用するランタイムclr.dllを見つけることができませんでした私は、単純なコンソールアプリケーション(ターゲットフレームワーク4.5.2)があります。はSOS
using System;
public class SosTest
{
public class Foo
{
public Foo()
{
Console.WriteLine("Creation of foo");
}
}
static void Main(string[] args)
{
var n1 = new Foo();
var n2 = new Foo();
Console.WriteLine("Allocated objects");
Console.WriteLine("Press any key to invoke GC");
Console.ReadKey();
n2 = n1;
n1 = null;
GC.Collect();
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
を私はマネージヒープの状態を見てみたいです。私は、次の手順を実行します。SOS .load MicrosoftNet\Framework\v4.0.30319\sos.dll
- オープンwindbgのwindbgのの「オープン実行」コマンドを使用して、私のプログラムの
- オープンのexeファイル
- するコマンドを実行し、ヒープ
!eeheap -gc
の状態
しかし、最後のコマンドの間、私は、次のメッセージが出ます:
をランタイムDLL(clr.dll)を見つけられませんでした。0x80004005 何かするために拡張コマンドにはclr.dllが必要です。
なぜコマンド!eeheap -gc
が失敗するのですか?
それはlm
コマンドの結果であるのに役立ちます場合:
0:000> lm
start end module name
00be0000 00be8000 ConsoleApplication1 (deferred)
734c0000 73519000 MSCOREE (deferred)
74c20000 74d00000 KERNEL32 (deferred)
753d0000 75571000 KERNELBASE (deferred)
77d80000 77f03000 ntdll (pdb symbols)
'.loadby'コマンドには' clr'モジュールが必要です。これは通常、 'clrjit'よりも早くロードされるので、' sxe ld clr'で十分でしょう。 –