Windbg和查看AppDomain内容



我知道我们可以在winbbg中使用!dumpdomain命令来查看给定管理进程中存在的各种应用程序域(例如:w3wp)。

我在LinqPad中编写了一个小程序(Recipe 3-1来自Visual c# 2010 Recipes a problem solution approach)来创建一个自定义的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();
}

后续步骤:

  • 运行程序。等待用户按回车键。
  • windbg开始。附上LinqPad.exe。
  • 发布命令:.load sosex.dll和.load sosex.dll
  • 发出命令。reload
  • 最后调用!dumpdomain此时,LinqPad会冻结。如果我关闭windbg,那么LinqPad也关闭了。

它是在LINQPad进程中创建的。查询本身运行在由LINQPad创建的单独的AppDomain中。错误消息是否与CLR版本不匹配有关?你正在运行LINQPad 2吗?X还是4.x?

相关内容

  • 没有找到相关文章

最新更新