web-dev-qa-db-ja.com

Visual Studioで外部クラスライブラリプロジェクトをデバッグする方法は?

別のソリューションにある外部プロジェクト(B)クラスライブラリからアセンブリを参照するプロジェクト(A)があります。

プロジェクトAからプログラムを実行しながらBからクラスライブラリを効率的にデバッグする方法をまだ理解していません。デバッグ情報など、プロジェクトBで有効にする必要があるものがあるので、Aからデバッグ時にステップインできますか?

前もって感謝します。

120
Konstantinos

Just My Code(JMC)を無効にしてみてください。

  • ツール->オプション->デバッガー
  • 「自分のコードだけを有効にする」のチェックを外します

デフォルトでは、デバッガーはソリューション内にのみ含まれるコードに世界のビューを制限しようとします。これは時には非常に役立ちますが、ソリューションに含まれていないコードをデバッグする場合(状況によって)、JMCを無効にする必要があります。そうしないと、コードは外部として扱われ、ビューからほとんど隠されます。

編集

コードが破損している場合は、次を試してください。

  • デバッグ-> Windows->モジュール
  • 興味のあるプロジェクトのDLLを見つけます
  • 右クリック->シンボルのロード->他のプロジェクトの.PDBへのパスを選択
185
JaredPar

これはしばらくの間私を悩ませてきました。通常、デバッグモードを使用して外部ライブラリを再構築してから、.dllと.pdbファイルの両方をWebサイトのビンにコピーします。これにより、ライブラリコードに足を踏み入れることができます。

12
TheGateKeeper

のパスを想定

プロジェクトA

C:\Projects\ProjectA

プロジェクトB

C:\Projects\ProjectB

そして、ProjectBのdllは

C:\Projects\ProjectB\bin\Debug\

ProjectBからProjectAにデバッグするには、次の手順を実行します

  1. Bのdllをdllの.PDBと一緒にProjectAのコンパイルディレクトリにコピーします。
  2. ProjectAをデバッグします。デバッグ中にコードがdllのメソッドやイベントなどを呼び出す必要がある部分に達したら、F11を押してdllのコードにステップインします。

注:.PDBファイルのコピーを忘れないでください

7
Sarath Avanavu

Visual Studioの2つのインスタンスを実行します。1つは外部dll用で、もう1つはメインアプリケーション用です。
外部dllのプロジェクトプロパティで、以下を設定します。

ビルドイベント:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

デバッグ:

  • 外部プログラムを開始:C:\<path-to-main>\bin\debug\<AppName>.exe

  • 作業ディレクトリC:\<path-to-main>\bin\debug

これにより、外部dllを作成するたびに、メインアプリケーションのディレクトリで更新されます。外部dllのプロジェクトからデバッグをヒットすると、メインアプリケーションは実行されますが、デバッガは外部dllのブレークポイントのみをヒットします。メインプロジェクトからデバッグをヒットすると、メインアプリケーションは最後にビルドされた外部dllで実行されますが、デバッガーはメインプロジェクトのブレークポイントのみをヒットします。

1つのデバッガーが両方のジョブを処理することを認識していますが、この方法で2つをまっすぐに保つ方が簡単だと思います。

[この回答を送ってくれたMartin Beckettによると]

外部ライブラリにデバッグできます。

[プロジェクト設定]タブの[ソースコード]フィールドで[Visual Studioディレクトリ]を探し、openCVソースへのパスを含めます。次に、各デバッグdllの.pdbファイルがdllと同じディレクトリにあることを確認します。

1
TripleS

Project(B)のブレークポイントがヒットしなかったため、同様の問題が発生していました。私の解決策は、dllを更新する必要があるため、project(B)を再構築してからproject(A)をデバッグすることでした。

Visual Studioを使用すると、外部ライブラリをデバッグできます。

0
Stefan Mitic