Warum kann Visual Studio 2010 PDB-Dateien nicht finden / öffnen?

83

Ich versuche, OpenCV in VS 2010 zu verwenden. Ich bin Amateur und lerne die ersten Schritte aus dem OpenCV-Wiki. Beim Versuch, mein Projekt zu debuggen, werden jedoch die folgenden Fehler angezeigt:

'C: \ Windows \ SysWOW64 \ ntdll.dll', Die PDB-Datei 'C: \ Windows \ SysWOW64 \ kernel32.dll' kann nicht gefunden oder geöffnet werden. Die PDB-Datei 'C: \ Windows \ SysWOW64 \ kernellbase kann nicht gefunden oder geöffnet werden. dll ', PDB-Datei kann nicht gefunden oder geöffnet werden

Ich habe diese Dateien im richtigen Verzeichnis. Warum kann sie dann nicht geöffnet werden? Was soll ich tun, um das Problem zu beheben?

HamidRezaHamidiEsfahani
quelle
Was meinst du mit "im richtigen Verzeichnis"? Befindet sich der PDB im selben Ordner wie die DLL?
Harper
1
@harper: Wenn man bedenkt , dass die Bibliotheken in Frage sind Windows - Systemdateien werden die PDBs wahrscheinlich nicht angenommen , wie die DLL im selben Ordner sein. Die DLLs befinden sich im Verzeichnis C: \ Windows \ SysWOW64, aber die PDB-Symbole befinden sich wahrscheinlich in Ihrem entworfenen Symbol-Cache-Verzeichnis. Die, die Sie in den Debug-Optionen von Visual Studio angegeben haben.
Cody Gray
@Cody Gray: Können Sie die PDBs (manuell) in das Verzeichnis kopieren oder müssen Sie die Microsoft (Source) Symbol Server verwenden?
Harper
@harper: Ich habe keine Ahnung, ob es so funktionieren wird. Ich bin sicher nicht , wenn Visual Studio wird die PDB - Symbole dort finden (obwohl ich mir vorstellen , dass es würde ). Was die Lizenzierung angeht, bin ich mir ziemlich sicher, dass Sie die Symbolserver von MS verwenden müssen. Wie sonst erhalten Sie die PDB-Dateien? Ich bin mir auch nicht sicher, warum Sie das boykottieren wollen. In Visual Studio ist all diese Funktionalität integriert. Warum also nicht davon profitieren? Es wurde entwickelt, um die Symbole lokal zwischenzuspeichern, sodass Sie sie nicht jedes Mal neu herunterladen müssen. Ich merke nicht einmal mehr, dass es passiert.
Cody Gray
@Cody Grey: Ich möchte nichts boykottieren. Ich habe diese PDBs nicht einmal. Aber ich bin gespannt, wie es funktioniert.
Harper

Antworten:

124

Ändern Sie zunächst die folgenden Parameter:

Extras -> Optionen -> Debuggen -> Symbole -> Server -> Ja

Drücken Sie dann Ctrl+ F5und Sie werden erstaunliche Dinge sehen.

Seanlitow
quelle
2
Beeindruckend! Das war wunderbar! Vielen Dank für diese Antwort. +1 für dich!
Matthew Crews
Um ganz klar zu sein, werden die Symbole nur einmal heruntergeladen, oder? Es wird mich nicht davon abhalten, überhaupt offline zu arbeiten?
Seanny123
1
Kennen Sie einen direkten Link zum Herunterladen? Ich arbeite in einem geschlossenen Netzwerk ohne Internetzugang.
Levkaster
1
Euhm ... Control F5 verbindet den Debugger AFAIK nicht. Diese Antwort geht also nicht auf den Punkt.
Buckley
1
Ich habe das Gleiche getan, wie du gesagt hast. aber jetzt zeigt es, dass einige Symbole geladen sind, während für den Rest der anderen PDF-Datei nicht hinzugefügt wird
Hemant Parihar
20

Ich bin mir ziemlich sicher, dass dies Warnungen sind , keine Fehler. Ihr Projekt sollte immer noch gut laufen.

Da Sie jedoch immer versuchen sollten, Compiler-Warnungen zu beheben, wollen wir sehen, was wir entdecken können. Ich bin mit OpenCV überhaupt nicht vertraut und Sie verlinken nicht auf das Wiki-Tutorial, dem Sie folgen. Mir scheint jedoch, dass das Problem darin besteht, dass Sie eine 64-Bit-Version von Windows ausführen (wie der Ordner "SysWOW64" im Pfad zu den DLL-Dateien zeigt), aber das OpenCV-Material, das Sie versuchen, wird erstellt für eine 32-Bit-Plattform. Daher müssen Sie das Projekt möglicherweise mit CMake neu erstellen, wie hier erläutert .

Insbesondere sind die aufgelisteten Dateien Windows-Systemdateien. PDB-Dateien enthalten Debugging-Informationen, mit denen Visual Studio kompilierten Code aufrufen und debuggen kann. Sie benötigen die PDB-Dateien nicht, damit Systembibliotheken Ihren eigenen Code debuggen können. Wenn Sie möchten, können Sie auch die Symbole für die Systembibliotheken herunterladen . Gehen Sie zum Menü "Debug", klicken Sie auf "Optionen und Einstellungen" und scrollen Sie im Listenfeld rechts nach unten, bis "Quellserver-Unterstützung aktivieren" angezeigt wird. Stellen Sie sicher, dass diese Option aktiviert ist. Klicken Sie dann in der Baumansicht links auf "Symbole" und stellen Sie sicher, dass die Option "Microsoft Symbol Server" ausgewählt ist. Klicken Sie auf OK, um den Dialog zu schließen, und versuchen Sie dann, ihn neu zu erstellen.

Cody Grey
quelle
7
Ich bin mir nicht sicher, was ich als Antwort darauf sagen soll. Suchen Sie weitere Hilfe? Oder hinterlässt du nur einen Kommentar? Denn wenn Sie nach mehr Hilfe suchen, müssen Sie erklären, was genau schief gelaufen ist, als Sie dies "versucht" haben und was Sie unter "hat nicht funktioniert" verstehen. Wir sind alle Programmierer. Sie wissen, dass auf diese Weise kein nützlicher Fehlerbericht abgelegt wird.
Cody Gray
Entschuldigung, aus irgendeinem Grund wurde meine gesamte Nachricht nicht eingefügt. Aber seitdem habe ich es mit der folgenden Methode behoben. stackoverflow.com/questions/1468726/…
daveomcd
9

Visual Studio Community Edition 2015

Habe den ganzen Tag diesen Fehler gehabt. Ich habe es schließlich behoben, indem ich zu Extras> Einstellungen importieren und exportieren> Alle Optionen zurücksetzen> Allgemeine Einstellungen zurücksetzen ging.

Gehen Sie nach dem Zurücksetzen zu Extras> Optionen> Debuggen> Symbole> - Aktivieren Sie dann das Kontrollkästchen neben Microsoft Symbol Server.

Führen Sie Ihre App im Debug-Modus aus, und es werden Fenster geöffnet, in denen angegeben wird, dass Symbole für eine Reihe verschiedener DLL-Dateien heruntergeladen werden. Lass es damit fertig werden.

Sobald es abgeschlossen ist, sollte es wieder funktionieren.

Niemand
quelle
3

Ich hatte das gleiche Problem. Es stellt sich heraus, dass ich beim Kompilieren eines Projekts, das ich von einer anderen Person erhalten habe, nicht das richtige StartUp-Projekt festgelegt habe (klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf das gewünschte Startprojekt und wählen Sie "Als StartUp-Projekt festlegen"). Vielleicht hilft das, Prost.

Jurek Stefanowicz
quelle
1

Wenn Sie sich auf den ersten Thread / eine andere Möglichkeit beziehen, kann VS die PDF-Datei des Prozesses nicht öffnen oder finden, wenn Ihre ausführbare Datei im Hintergrund ausgeführt wird. Ich habe mit mpiexec gearbeitet und bin auf dieses Problem gestoßen. Überprüfen Sie immer Ihren Task-Manager und beenden Sie alle Exec-Prozesse, die Sie in Ihrem Projekt erstellen werden. Sobald ich das getan habe, hat es debuggt oder gut gebaut.

Wenn Sie versuchen, mit der Warnung fortzufahren, werden die Haltepunkte nicht erreicht und die aktuelle ausführbare Datei wird nicht angezeigt

Mpi
quelle
1

Für VS2013- Benutzer, die sich hier wie ich befinden:

Tools -> Options -> Debugging -> Symbols

Sie werden sehen, dass das Cache symbols in this directory:Feld leer ist. Sie können den Pfad entweder selbst durchsuchen / eingeben oder einfach auf die Load all symbolsSchaltfläche klicken . Ein Warnfenster mit der Meldung "Da Sie kein Symbol-Cache-Verzeichnis ausgewählt haben, wird die Standardeinstellung verwendet" wird angezeigt. Sie sehen nun C:\Users\XXXX\AppData\Local\Temp\SymbolCacheim zuvor leeren Pfadfeld. Klicken Sie Load all symbolsein zweites Mal und Sie sollten eingestellt sein. Klicken Sie auf OK, und reinigen und erstellen Sie Ihre Lösung nur aus Gründen der Sorgfalt.

eine Halle
quelle
0

Ich habe festgestellt, dass diese Fehler manchmal auf fehlende Berechtigungen beim Kompilieren eines Projekts zurückzuführen sind. Daher werde ich als Administrator ausgeführt, damit es ordnungsgemäß funktioniert.

SinisterRainbow
quelle
0

Ich habe die gleichen Warnungen. Ich bin mir nicht sicher, ob es sich um 32 vs 64 Bit handelt. Ich habe gerade die neuen Symbole geladen und einige Probleme wurden gelöst, aber die bezüglich OpenCV bleiben bestehen. Dies ist ein Auszug aus der Ausgabe mit gelöstem oder ungelöstem Problem:

'OpenCV_helloworld.exe': Geladene 'C: \ OpenCV2.2 \ bin \ opencv_imgproc220d.dll', PDB-Datei kann nicht gefunden oder geöffnet werden

'OpenCV_helloworld.exe': Geladene 'C: \ WINDOWS \ system32 \ imm32.dll', geladene Symbole (Quellinformationen entfernt).

Der Code gibt 0 aus, falls jemand danach fragt.

Das Programm '[4424] OpenCV_helloworld.exe: Native' wurde mit dem Code 0 (0x0) beendet.

sparaflAsh
quelle
0

Ich hatte das gleiche Problem. Das Debuggen funktioniert nicht mit dem Material, das mit der ausführbaren OpenCV-Datei geliefert wird. Sie müssen Ihre eigenen Binärdateien erstellen.
Aktivieren Sie dann Microsoft Symbol Server unter Debug-> Optionen und Einstellungen-> Debug-> Symbole

John Ktejik
quelle
0

Ich bin auf das gleiche Problem gestoßen. Als ich meinen Unit Test mit C ++ - Code ausführte, wurde die Fehlermeldung "PDB-Datei kann nicht gefunden oder geöffnet werden" angezeigt.

Protokolle

Als ich mir das Ausgabeprotokoll in Visual Studio ansah, stellte ich fest, dass es im falschen Ordner angezeigt wurde. Ich hatte den WinUnit-Ordner umbenannt, aber etwas im WinUnit-Code suchte nach der PDB-Datei unter Verwendung des alten Ordnernamens. Ich denke, sie haben es hart codiert.

Habe das Problem gefunden

Als ich die WinUnit-Dateien zum ersten Mal heruntergeladen und entpackt habe, hieß der Hauptordner "WinUnit-1.2.0909.1". Nachdem ich die Datei entpackt hatte, benannte ich den Ordner in "WinUnit" um, da die Eingabe während der Einrichtung des Visual Studio-Projekts einfacher ist. Aber anscheinend hat dies die Fähigkeit zum Auffinden der PDB-Datei beeinträchtigt, obwohl ich alles gemäß der WinUnit-Dokumentation eingerichtet habe.

Mein Fix

Ich habe den Ordnernamen wieder in das Original geändert und es funktioniert.

Seltsam.

user2384458
quelle
0

Hatte hier das gleiche Problem, aber eine andere Lösung hat funktioniert.

Zuerst habe ich Folgendes versucht, von denen keines funktioniert hat:

  1. Laden Sie Symbole wie von seanlitow vorgeschlagen

  2. Entfernen / Hinzufügen eines Verweises auf PresentationFramework und PresentationCore

  3. System neu starten

Die Lösung bestand darin, die letzten Änderungen, die ich an meinem Code vorgenommen hatte , rückgängig zu machen . Ich hatte gerade ein paar Optionsfelder und Ereignishandler für aktivierte und deaktivierte Ereignisse hinzugefügt. Nach dem Entfernen meiner letzten Änderungen wurde alles kompiliert. Ich habe dann meine genauen Änderungen wieder hinzugefügt und alles richtig kompiliert. Ich verstehe nicht, warum das funktioniert hat - ich kann mir nur ein Problem mit meiner VS-Lösung vorstellen. Wenn jedoch keiner der anderen Vorschläge funktioniert, können Sie versuchen, Ihre letzten Änderungen zurückzusetzen. HINWEIS: Wenn Sie Visual Studio schließen und erneut öffnen, geht Ihr Rückgängig-Verlauf verloren. Versuchen Sie dies daher möglicherweise, bevor Sie VS schließen.

Thomas Bailey
quelle