Visual Studio 2010がPDBファイルを検索/開くことができないのはなぜですか?


83

私はVS2010でOpenCVを使用しようとしています。私はアマチュアであり、OpenCVwikiから最初のステップを学んでいます。ただし、プロジェクトをデバッグしようとすると、次のエラーが発生します。

「C:\ Windows \ SysWOW64 \ ntdll.dll」、PDBファイル「C:\ Windows \ SysWOW64 \ kernel32.dll」が見つからないか開くことができません。「C:\ Windows \ SysWOW64 \ kernellbase」が見つかりません。 dll '、PDBファイルが見つからないか開くことができません

私はそれらのファイルを正しいディレクトリに持っているのに、なぜそれらを開くことができないのですか?問題を解決するにはどうすればよいですか?


「正しいディレクトリにある」とはどういう意味ですか?PDBはDLLと同じフォルダーにありますか?
ハーパー2011年

1
@harper:問題のライブラリがWindowsシステムファイルであることを考えると、PDBはおそらくDLLと同じフォルダにあるとは考えられてません。DLLはC:\ Windows \ SysWOW64ディレクトリにありますが、PDBシンボルは設計されたシンボルキャッシュディレクトリにある可能性があります。VisualStudioのデバッグオプションで指定したもの。
コーディグレイ

@Cody Gray:PDBをディレクトリに(手動で)コピーできますか、それともMicrosoft(ソース)シンボルサーバーを利用する必要がありますか?
ハーパー2011年

@harper:それがそのように機能するかどうかはわかりません。Visual StudioがそこでPDBシンボルを見つけるかどうかはわかりません(私はそれを見つけると思います)。しかし、ライセンスに関しては、MSのシンボルサーバーを使用する必要があると確信しています。他にどのようにしてPDBファイルを入手しますか?また、なぜこれをボイコットしたいかもわかりません。Visual Studioにはこのすべての機能が組み込まれているので、それを利用してみませんか?シンボルをローカルにキャッシュするように設計されているため、毎回シンボルを再ダウンロードする必要はありません。私はそれがもう起こっていることにさえ気づいていません。
コーディグレイ

@コーディグレイ:私は何もボイコットしたくない。私もこれらのPDBを持っていません。しかし、私はそれがどのように機能するのか興味があります。
ハーパー2011年

回答:


124

まず、次のパラメータを変更します。

ツール->オプション->デバッグ->シンボル->サーバー->はい

次にCtrl+F5を押すと、すばらしいものが表示されます。


2
うわー!最高でした!この答えをありがとう。あなたのために+1!
マシュークルー2012

明確にするために、これはシンボルを一度だけダウンロードしますか?それは私がオフラインで働くことをまったく止めませんか?
Seanny123 2014

1
ダウンロードするための直接リンクを知っていますか?私はインターネットにアクセスできない閉じたネットワークで働いています。
levkaster 2015年

2
Euhm ...コントロールF5は、デバッガーAFAIKを接続しません。したがって、この答えには要点がありません。
buckley 2015

1
私はあなたが言ったのと同じことをしました。しかし今では、他のpdbファイルが追加されていないのに、いくつかのシンボルがロードされていることが示されています
Hemant Parihar 2015

20

これらはエラーではなく警告であると確信しています。プロジェクトは引き続き正常に実行されます。

ただし、コンパイラの警告は常に修正する必要があるため、何を発見できるか見てみましょう。私はOpenCVにまったく精通しておらず、あなたがフォローしているwikiチュートリアルにリンクしていません。しかし、問題は64ビットバージョンのWindowsを実行していることのように見えます(DLLファイルへのパスにある「SysWOW64」フォルダーで証明されています)が、試行しているOpenCVのものはビルドされています32ビットプラットフォームの場合。したがって、説明したように、CMakeを使用してプロジェクトを再構築する必要があるかもしれませんここでます

より具体的には、リストされているファイルはWindowsシステムファイルです。PDBファイルには、VisualStudioがコンパイル済みコードにステップインしてデバッグできるようにするために使用するデバッグ情報が含まれています。独自のコードをデバッグできるようにするために、システムライブラリ用のPDBファイルは実際には必要ありません。ただし、必要に応じて、システムライブラリのシンボルダウンロードすることもできます。[デバッグ]メニューに移動し、[オプションと設定]をクリックして、[ソースサーバーのサポートを有効にする]が表示されるまで右側のリストボックスを下にスクロールします。オプションがチェックされていることを確認してください。次に、左側のツリービューで[シンボル]をクリックし、[Microsoftシンボルサーバー]オプションが選択されていることを確認します。[OK]をクリックしてダイアログを閉じてから、再構築してみてください。


7
それに応えて何を言うべきかよくわかりません。もっと助けを探していますか?それともコメントを残しているだけですか?あなたはより多くの助けを探しているならので、あなたは何を説明する必要があるとしているまさにあなたは、あなたが何を意味「しませんでした仕事」「これを試してみました」とき間違っていました。私たちはすべてプログラマーです、あなたはそれが有用なバグレポートが提出される方法ではないことを知っています。
コーディグレイ

なんらかの理由でメッセージ全体が貼り付けられませんでした。しかし、それ以来、私は次の方法を使用してそれを修正しました。stackoverflow.com/questions/1468726/...
daveomcd

10

Visual Studio Community Edition 2015

一日中このエラーが発生しています。最後に、[ツール]> [設定のインポートとエクスポート]> [すべてのオプションをリセット]> [一般設定をリセット]に移動して修正しました。

リセットしたら、[ツール]> [オプション]> [デバッグ]> [シンボル]>-次に、[Microsoft SymbolServers]の横にあるチェックボックスをオンにします。

アプリをデバッグモードで実行すると、さまざまな.dllファイルのシンボルをダウンロードしていることを示すウィンドウが開きます。これを終了させて​​ください。

完了すると、再び機能するはずです。


3

私も同じ問題を抱えていました。他の人から入手したプロジェクトをコンパイルしても、正しいスタートアッププロジェクトを設定していないことがわかりました(ソリューションエクスプローラーで目的のスタートアッププロジェクトを右クリックし、[スタートアッププロジェクトとして設定]を選択します)。多分これは助けになるでしょう、乾杯。


1

最初のスレッド/別の可能性を参照すると、VSがプロセスのpdbファイルを開いたり見つけたりできないのは、実行可能ファイルをバックグラウンドで実行している場合です。私はmpiexecで作業していて、この問題に遭遇しました。常にタスクマネージャーを確認し、プロジェクトでビルドする実行プロセスをすべて強制終了してください。私がそれをしたら、それはデバッグするか、うまく構築しました。

また、警告を続行しようとすると、ブレークポイントにヒットせず、現在の実行可能ファイルがありません。


1

私のようにここにいるVS2013ユーザーの場合:

Tools -> Options -> Debugging -> Symbols

Cache symbols in this directory:フィールドが空であることがわかります。パスを自分で参照/入力するか、先に進んでLoad all symbolsボタンをクリックすることができます。「シンボルキャッシュディレクトリを選択していないため、デフォルトが使用されます」という警告ウィンドウが表示されます。C:\Users\XXXX\AppData\Local\Temp\SymbolCacheこれで、以前は空だったパスフィールドが表示されます。もう一度クリックLoad all symbolsすると、設定されます。[OK]をクリックし、勤勉のために、ソリューションをクリーンアップして再構築します。


0

これらのエラーは、プロジェクトのコンパイル時の権限の欠如が原因である場合があることがわかりました。そのため、管理者として実行して、プロジェクトを正しく機能させます。


0

同じ警告が表示されます。32ビットと64ビットの問題かどうかはわかりません。新しいシンボルをロードしただけで、いくつかの問題は解決されましたが、OpenCVに関する問題はまだ残っています。これは、解決済みの問題と未解決の問題の出力の抜粋です。

「OpenCV_helloworld.exe」:ロード済み「C:\ OpenCV2.2 \ bin \ opencv_imgproc220d.dll」、PDBファイルが見つからないか開くことができません

'OpenCV_helloworld.exe':ロード済み 'C:\ WINDOWS \ system32 \ imm32.dll'、シンボルがロードされました(ソース情報が削除されました)。

誰かが尋ねる場合に備えて、コードは0を終了しています。

プログラム '[4424] OpenCV_helloworld.exe:Native'がコード0(0x0)で終了しました。


0

私も同じ問題を抱えていました。デバッグは、OpenCV実行可能ファイルに付属しているものでは機能しません。独自のバイナリを作成する必要があります。
次に、[デバッグ]-> [オプションと設定]-> [デバッグ]-> [シンボル]でMicrosoftSymbolServerを有効にします。


0

私は同じ問題に遭遇しました。C ++コードで単体テストを実行すると、「PDBファイルが見つからないか開くことができません」というエラーが表示されました。

ログ

Visual Studioで出力ログを見ると、間違ったフォルダーを検索していることがわかりました。WinUnitフォルダーの名前を変更しましたが、WinUnitコード内の何かが、古いフォルダー名を使用してPDBファイルを探していました。彼らはそれをハードコーディングしたと思います。

問題が見つかりました

WinUnitファイルを最初にダウンロードして解凍したとき、メインフォルダーは「WinUnit-1.2.0909.1」と呼ばれていました。ファイルを解凍した後、Visual Studioプロジェクトのセットアップ中に入力しやすいため、フォルダーの名前を「WinUnit」に変更しました。しかし、WinUnitのドキュメントに従ってすべてをセットアップしたにもかかわらず、これによりPDBファイルを見つける機能が壊れたようです。

私の修正

フォルダ名を元に戻しましたが、動作します。

奇妙な。


0

ここでも同じ問題がありましたが、別の解決策が機能しました。

最初に、私は以下を試しましたが、どれもうまくいきませんでした:

  1. seanlitowによって提案されたようにシンボルをロードします

  2. PresentationFrameworkおよびPresentationCoreへの参照を削除/追加します

  3. システムを再起動します

解決策は、コードに加えた最後のいくつかの変更を元に戻すことでした。チェックされたイベントとチェックされていないイベント用に、いくつかのラジオボタンとイベントハンドラーを追加しました。最近の変更を削除した後、すべてがコンパイルされました。次に、正確な変更を追加し直し、すべてが正しくコンパイルされました。なぜこれが機能したのかわかりません。考えられるのは、VSソリューションの問題だけです。とにかく、他の提案がうまくいかない場合は、最新の変更を元に戻してみてください。注:Visual Studioを閉じて再度開くと、元に戻す履歴が失われるため、VSを閉じる前にこれを試すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.