我知道我们可以在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?