Windbg и просмотр контента AppDomain - PullRequest
3 голосов
/ 15 ноября 2011

Я знаю, что мы можем использовать команду! 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 также закроется.

1 Ответ

1 голос
/ 15 ноября 2011

Он создан внутри процесса LINQPad.Ваш запрос выполняется в отдельном домене приложений, созданном LINQPad.Может ли сообщение об ошибке быть связано с несоответствием версии CLR?Вы используете LINQPad 2.x или 4.x?

...