2011-11-15 12 views
2

私はwinbbgで!dumpdomainコマンドを使用して、特定の管理対象プロセス(たとえばw3wp)に存在するさまざまなアプリドメインを表示できることは知っています。WindbgとAppDomainの内容を表示

カスタムAppDomainを作成するために、LinqPadの小さなプログラム(Visual C#2010 Recipesのレシピ3-1問題解決の手法)を書きました。これが私が直面している問題です。 windbgを使用してこのappdomainを表示できません。つまり、このアプリドメインはどこに作成されていますか?それはLinqPadプロセス内でホストされていますか?そうでなければ、このカスタムappdomainをどのプロセスがホストしていますか?

私はWinDbgをして問題にLinqPad.exeを取り付ける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
  • 発行コマンドは、最後にdumpdomain呼び出す
  • を.reload。この時点でLinqPadはフリーズします。私がwindbgを閉じると、LinqPadも閉じます。

答えて

1

LINQPadプロセス内で作成されます。クエリ自体は、LINQPadによって作成された別のAppDomainで実行されます。エラーメッセージがCLRバージョンの不一致に関連する可能性がありますか? LINQPad 2.xまたは4.xを実行していますか?

+0

私はLinqPadのv4.31を使用しています。ロードされたSOS.dllは.Net 4.0バージョンに対応しています。私は、アプリケーションドメインを作成するために使用しているコードで質問を更新しました。 –

関連する問題