0

私は1つのwpfアプリケーションで作業しています。私はすべてのdllをBootLoaderメソッドであらかじめロードしています。私はブレークポイントを私のdllの中に入れた。私はデバッグできません、私のブレークポイントはヒットしなかったし、ブレークポイントも無効には思われません。ビジュアルスタジオを使用して事前にロードされている場合、DLLをデバッグするにはどうすればいいですか?2015

すべてのオプションは正しいです。でも、タブはシンボルがロードされて表示され、アセンブリのPDBファイルが同じ場所に

enter image description here

private readonly ConcurrentDictionary<string, Assembly> _libs; 
      public App() 
      { 
       _libs = new ConcurrentDictionary<string, Assembly>(); 
       BootLoader(); 
      } 
private void BootLoader() 
     { 
      Assembly a; 
      foreach (var dll in new DirectoryInfo(System.AppDomain.CurrentDomain.BaseDirectory + @"\..\..\").GetFiles("*.dll", SearchOption.AllDirectories)) 
      { 
       if (!_libs.TryGetValue(dll.Name, out a)) 
       { 
        if (!_libs.TryAdd(dll.Name, Assembly.LoadFile(dll.FullName))) 
        { 
         Logger.Error($"CurrentDomain_AssemblyResolve: could not add {dll.Name} in assembly list"); 
        } 
       } 
      } 

アシストしてくださいあるモジュール。

+0

「私はデバッグできません」と明記してください。 –

+0

@AlexeiLevenkov:質問を更新しました。私のブレークポイントがヒットせず、また有効になっています – vishal

+0

dll内のどこで実際にコードを呼び出しますか?それを実行していません。 – codenheim

答えて

1

各アセンブリのpdbファイルが同じ場所にあることを確認してください。

+0

はいこれはdllと同じ場所にあります – vishal

0

Visual Studioでアプリケーションのデバッグを開始すると、すべてのブレークポイントがヒットする前にすべてのアセンブリシンボルファイルがロードされます。だから、問題はSymbolファイルの読み込みに関連していません。

デバッグモードであることを確認してください。最初にデバッグを開始するときは、リリースモードではありません。 提供したサンプルコードによれば、BootLoader()メソッドには条件があります。追加したブレークポイントがIf条件文または条件文ブロックの条件を満たすであることを確認してください。

関連する問題