у меня есть простое консольное приложение (целевая рамочное 4.5.2):Не удалось найти во время выполнения clr.dll использовать СОС
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();
}
}
Я хочу видеть состояние управляемой кучи. Я делаю следующие шаги:
- Открыть Windbg
- Открыть исполняемый файл из моей программы с помощью команды Windbg «Открыть исполняемую»
- Perform команды для загрузки СОСА
.load MicrosoftNet\Framework\v4.0.30319\sos.dll
- Perform команды, чтобы увидеть состояние кучи
!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' может быть достаточно. –