Я знаю, что мы можем использовать команду! Dumpdomain в winbbg для просмотра различных доменов приложений, присутствующих в данном управляемом процессе (например, w3wp).
Я написал небольшую программу (рецепт 3-1 из Visual C # 2010 Recipes A подход к решению проблемы) в LinqPad для создания собственного домена приложения. Это где я сталкиваюсь с проблемами. Я не могу просмотреть это приложение с помощью 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.
- Запустите windbg. Прикрепите LinqPad.exe.
- Команды выдачи: .load sos.dll и .load sosex.dll
- Команда выдачи .reload
- Наконец, позвоните! Dumpdomain. В этот момент LinqPad зависает. Если я закрою windbg, то LinqPad также закроется.