Я знаю, что мы можем использовать команду !dumpdomain в winbbg для просмотра различных доменов приложений, присутствующих в данном управляемом процессе (например, w3wp).
Я написал небольшую программу (Рецепт 3-1 из Visual C# 2010 Рецепты Подход к решению проблемы) в LinqPad, чтобы создать собственный AppDomain. Здесь я сталкиваюсь с проблемами. Я не могу просмотреть этот домен приложения с помощью windbg. Другими словами, где создается этот домен приложения? Он размещен внутри процесса LinqPad? Если нет, то в каком процессе размещается этот пользовательский домен приложения?
Я попытался подключить LinqPad.exe к windbg и выдал команду !dumpdomain, но получил следующую ошибку:
Не удалось найти DLL среды выполнения (clr.dll), 0x80004005 Команды расширения нуждаются в clr.dll, чтобы что-то делать.
Код :
void Main()
{
AppDomainSetup setUpInfo = new AppDomainSetup();
setUpInfo.ApplicationBase = @"C:\MyRootDirectory";
setUpInfo.ConfigurationFile = "MyApp.config";
setUpInfo.PrivateBinPath = "bin;plugins;external";
AppDomain newDomain = AppDomain.CreateDomain("My New Domain",null,setUpInfo);
Console.WriteLine("Main method complete.Press Enter");
Console.ReadLine();
}
Выполненные шаги:
- Запустите программу. Он ждет, пока пользователь нажмет Enter.
- Запустите виндбг. Прикрепите LinqPad.exe.
- команды выпуска: .load sos.dll и .load sosex.dll
- Выдать команду .reload
- Наконец, вызовите !dumpdomain. В этот момент LinqPad зависает. Если закрываю виндбг, то и LinqPad закрывается.