web-dev-qa-db-ja.com

Visual Studioこのドキュメントにはシンボルがロードされていません

Visual Studio 2008 C++プロジェクトのデバッグに問題があります。デバッグで実行を開始すると、ブレークポイントが無効になり、メッセージが表示されます

ブレークポイントはヒットしません。このドキュメントにはシンボルがロードされていません。

私はクリーニングと再構築を試みましたが、これは違いはありません。

また、[デバッグ]-> [Windows]-> [モジュール]を調べてみました。デバッグしようとしているモジュールを右クリックして、シンボルロード情報を押すと、シンボルをロードしようとした場所のリストが表示されます。リストの最初は正しく、ファイルは存在しますが、次はこのエラーです

C:\ path\to\my\symbol\Debug\MyProject.pdb:エラーの不明なシンボルハンドラ

誰がこれを引き起こすのか、またはそれを修正する方法を知っていますか?

34
Jim Jeffries

まず、モジュールの一部が動的に(必要な場合のみ)ロードされるため、モジュールの一部がモジュールウィンドウに表示されない可能性があります。

[リンカー]> [デバッグ]> [プログラムデータベースファイルの生成]および[デバッグ情報の生成]でプロジェクトプロパティをチェックすることをお勧めします。これら2つが正しく設定されていることを確認してください。

また、[C/C++]> [全般]> [デバッグ情報の形式]が[編集と続行](/ ZI)または同様のプログラムデータベースに設定されているかどうかを確認します。

シンボルファイルが存在することを言及したことは知っていますが、チェックしたばかりのチェックでは、適切な場所に適切なバージョンのシンボルがあることを確認します。

最後に、ソリューション内のすべてのプロジェクトとファイルが、リリースなどではなくデバッグとしてコンパイルされるように設定されているかどうかを確認します。

これが少し役立つことを願っています。

29
TheScripter777

「プロセスにアタッチ」を使用しているときに誰かがこの問題を抱えている場合、この質問に対する答えはそれを解決しました:

プロセスにアタッチするときにVisual Studioがモジュールをロードしない

具体的には、「自動」ではなく「添付」オプションで「ネイティブコード」に切り替えます。

5
James Jenkinson

私の場合、ツール/オプション/デバッグ/全般の「管理互換モードを使用」をチェックすることで問題を解決しました。

4
Razvan Socol

私にとっては、修正はVisual Studioの再起動 :)にありました。他には何も助けませんでした-クリーンアップ(デバッグフォルダー内のすべてのファイルを削除)を試み、設定をチェックし、mspdbsrv.exeプロセスを強制終了しましたが、VSの再起動のみがトリックを行いました。

3

Mspdbsrv.exeプロセスに問題がある可能性があります。強制終了して、デバッガーを再起動してください。

3
David

私はソースを横にコピーし、完全にクリーンなコピーをチェックアウトすることでこれを解決することができました。私はそれがプロジェクトの.suoファイルに保存された設定であったと思います。

3
Jim Jeffries

Binおよびobjフォルダー内のすべてのファイルを削除します。次に、ソリューションを再度ビルドします。あなたの問題が私のようなものである場合、VSは特定の未知のファイルの古いバージョンをロードしていたようで、ソリューション/プロジェクトを再構築しても置き換えられません。これを試す前に、必ずソリューション/プロジェクトのコピーを作成してください。幸運を!

2
Peyton Stults

デバッグにそのdllを使用するWebサイトの[プロパティ]に移動し、以下の[デバッガー]セクションで[ネイティブコード]を選択します。

enter image description here

2
Vijay Bansal

Modulesウィンドウで右クリックして、Debug出力フォルダーをシステムがシンボルファイルを探すフォルダーに追加できます。また、私のために働いたのは、すべての出力ファイルを削除することでした手動Cleanは毎回それをしないので、.pdbファイルが生成されます。出力ファイルに対応していないため、そこからシンボルをロードしません。

1
GreatDane

プロジェクトのフォルダー内に「Debug」フォルダーのコピーを作成し、元の「Debug」フォルダー内のすべてのファイルを削除します。プロジェクトがロードされた状態で既にVisual Studioを実行していた場合の追加の手段として、デバッグの包含を削除した後に閉じ、プロジェクト全体を再ビルドする前に再度開くと、理論的にはこのアクションによりシンボルファイルの新しいコピーが作成され、残りはデバッグに必要ですコード。ファイルを他のコンピューターに移動し、そこからコードをコンパイルしてデバッグしようとすると、この問題が発生することがわかりました。ただし、すべてのフォルダー名とドライブ名は同じでしたが、IDE以前に作成されたシンボルファイルを使用できませんでした。

1
Diego

VS2015 C++

VS2015でアプリケーションをデバッグしようとしたときに、シンボルの読み込みをキャンセルした後、同じ問題が発生しました。この後、VS2015は、興味のあるプロジェクト(C#を呼び出すC++ DLLを含むソリューションの複数のサブプロジェクト)のシンボルの読み込みを拒否しました。上記のソリューションはうまくいきませんでしたが、これはうまくいきました。

Visual Studio 2015(C++)の場合:

  1. ブレークポイントがあるプロジェクトを右クリックして選択します
    properties Expand C/C++
  2. C/C++でGeneralを選択します
  3. デバッグ情報形式を他のオプションに変更します
  4. 適用をクリックします
  5. デバッグ情報の形式をデフォルトの「編集および続行用プログラムデータベース(/ ZI)(または任意のもの)」に戻します。
  6. 適用をクリックします
  7. プロジェクトを再構築します

お役に立てれば。アラン・M

1
Alan M

私はWIAドライバーをデバッグしていますが、このような問題に遭遇しました。私はこのログに気づいた:

C:\ Windows\System32\WIA\wiadriverex.dllという名前のDLLをロードできません(LoadLibraryExが0x0000007Eを返しました)。ドライバーが正しくインストールされていることを確認してください

その後、DLL依存関係が原因であることに気付きました。必要なDLLをSystem32にコピーすると、問題はなくなりました。注意してSystem32にコピーしないと、うまくいきません。

0
Sanbrother

私の場合、「リンカー->一般」の「ライブラリ依存関係入力を使用」を「はい」に設定する必要があり、問題は解決します。

0
user7129071

上記のどれも私を助けませんでした...

最後にDebug\X64からDebug\win32に変更しましたが、これは助けになりました。おそらく、両方で同じではない構成です。これは誰かの回避策として役立つかもしれません...

それが誰にも役立つことを願っています。

0
ephraim