Visual Studio 2012 でカスタム プロジェクトをデバッグするためのシンボル ファイルが読み込まれない 質問する

Visual Studio 2012 でカスタム プロジェクトをデバッグするためのシンボル ファイルが読み込まれない 質問する

Visual Studio 2012 には、実行可能ファイルとクラス ライブラリ プロジェクトで構成される大規模なソリューションがあります。アプリケーションをデバッグするときに、特定のクラス ライブラリ プロジェクトのブレークポイントがヒットしません。

私はデバッグ > ウィンドウ > モジュールそのプロジェクトのシンボルのステータスを確認するウィンドウが表示され、「PDB ファイルが見つからないか開けません」
また、"いいえ"「ユーザーコード」列。
ソリューション内の他のカスタム プロジェクトがいくつかあり、その列に「いいえ」と表示されていて、そのシンボルも読み込まれていないことに気付きました。「ユーザー コード」の下に「はい」と表示されているものは、問題なく pdb が読み込まれているようです。ただし、これが関連しているかどうかはわかりません。

利用したダンプビン/ヘッダーdll と pdb ファイルへのパスが存在し、正しいことを確認します。

モジュールは、シンボル読み込みの除外リストに確実に含まれていません。

また、モジュールウィンドウのエントリを右クリックして、「シンボルを読み込む」dllヘッダーに指定されたパスに移動します。pdbを選択すると、「このフォルダに一致するシンボル ファイルが見つかりませんでした」

これらのフォルダとファイルを削除し、ソリューションをクリーンアップして閉じ、全体を再構築した後に、このエラーが発生します。pdb は、問題の dll と同時に構築されたことは間違いありません。

したがって、問題は明らかにエラー メッセージの「pdb を開けません」という部分にあります。

これを 2 台のコンピューターで試しましたが、両方とも同じ動作を示します。

ここからどこへ進むべきか、また、一体なぜ dll に対応するビルドされた pdb がロードされないのか、誰かアドバイスをいただけませんか?

ベストアンサー1

私はpdbとdllが実際に一致しているかどうかを確認するためにいくつかのツールを試しました。チェックマッチ実行中の dll 内の GUID と obj フォルダー内の pdb が一致していないことがわかりました。

したがって、プロジェクトの obj フォルダー内の dll と pdb は一致しているものの、ビルド後のイベントによってアプリケーションの宛先フォルダーに実際にコピーされた dll は、以前のビルドからの古い dll であったことが判明しました。

ビルド後のイベントは、その特定のプロジェクトがビルドされる前、または少なくともビルドが完了する前まで実行されており、その後継続中のビルドによって上書きされたビンから既存の dll をコピーしていました。

ソリューションのプロジェクト依存関係を編集し、ビルド後のイベントを持つプロジェクトが読み込まれていなかったプロジェクトに依存するようにすることで問題を解決しました。これで、デバッグ中に pdb が読み込まれるようになりました。

おすすめ記事