In diesem Ordner wurde keine passende Symboldatei gefunden

77

Ich möchte Debug-Symbole verwenden, erhalte jedoch die folgende Fehlermeldung:

In diesem Ordner wurde keine passende Symboldatei gefunden

Was ist dieses Problem und wie kann es gelöst werden?

sɐunıɔ ןɐ qɐp
quelle

Antworten:

39

Eines der Dinge, auf die ich gestoßen bin, war, dass das Debugging für das Projekt deaktiviert war, auf das verwiesen wird, wo sich der Code befindet. In meinem Fall habe ich eine neue Konfiguration mit dem Namen "Developer" erstellt und das Debugging standardmäßig deaktiviert.

  1. Klicken Sie mit der rechten Maustaste auf das betreffende Projekt
  2. Eigenschaften
  3. Bauen
  4. Erweitert (rechte untere Ecke)
  5. Setzen Sie Debug Info auf full
  6. Neu kompilieren
Kevin Aung
quelle
4
Bei einer Dotnet Core 2.0-Konsolen-App funktionierte das Debuggen nicht mehr , nachdem ich das Ziel-Framework von netcoreapp2.0auf geändert hatte net4.7. Ändern Sie jedoch ...-> Erweitert -> Ausgabe -> Debug-Informationen: von portable, fullum das Problem zu beheben. Vielen Dank!
Ray
1
Vielen Dank, Sie müssen dies auch tun, wenn Sie eine NetStandard-Referenz in einem NetFX-Projekt verwenden.
Jonathan Dickinson
Das hat bei mir nicht funktioniert. Wenn ich die pdbDatei auswähle, erhalte ich diesen berüchtigten Fehler.
Shimmy Weitzhandler
Dies war keine Lösung für mich. Aber ich habe eine Lösung im Resharper-Plugin gefunden. Im Modulfenster hat Resharper mit der rechten Maustaste die Option, Code aus Referenz-DLLs zu generieren.
Ganesh Jadhav
9

Ich hatte das gleiche Problem wie @DmainEvent. Anscheinend war die von mir verwendete DLL nicht dieselbe Version wie die gerade kompilierte PDF-Datei, daher wurde die Fehlermeldung angezeigt.

Wenn Sie dieses Problem haben, versuchen Sie, die DLL und die PDF-Datei aus demselben Kompilierungslauf zu verwenden.

Jeff Piersol
quelle
Hatte genau das gleiche Problem. Ich habe eine PDF-Datei manuell kopiert, aber sie stimmte nicht mit der vorkompilierten C ++ - DLL überein, die ausgeführt wird. Ich hätte es wohl besser wissen sollen, aber das hat es geschafft.
Sean Skelly
7

Ich bin auf dieses Problem gestoßen und die Antwort war einfach.

Visual Studio verfügt über zwei Einstellungen auf Projektebene, mit denen PDF-Dateien erstellt werden können.

  1. Linker: Konfigurationseigenschaften -> Linker -> Debugging -> Programmdatenbankdatei generieren = "xxxx.pdb"
  2. Compiler: Konfigurationseigenschaften -> C / C ++ -> Ausgabedateien -> Programmdatenbank Dateiname = "yyyy.pdb"

Sie möchten die Nummer 1 für das Debuggen. Vergiss # 2. Geben Sie Datei 2 einen anderen Namen als Datei 1, um diesen Fehler zu beheben.

Ich weiß nicht, warum Microsoft # 2 als PDF-Datei angibt. Das ist nur verwirrend.

C Johnson
quelle
20
Die Frage ist mit dem Tag c # versehen , daher gelten diese Einstellungen nicht
Flipchart
4
In meinem Fall sind die Einstellungen nur relevant, wenn die Haupt-App ein verwalteter Code ist und ich versuche, nativen Code zu debuggen, der vom Wrapper ausgeführt wird. Wenn ich das native C ++ direkt über die native C ++ - Tester-App debugge, erhält es auf magische Weise Debug-Informationen, obwohl die PDF-Datei überschrieben wird. Diese Einstellungen gelten also und haben mir geholfen, mein Problem zu lösen.
Peuczynski
Dieser Rat zum Festlegen der beiden verwirrenden PDF-Dateipfade hat für mein natives Codeprojekt funktioniert. Nur habe ich nur die beiden Pfadnamen # 1 und # 2 so eingestellt, dass sie gleich sind.
rtischer8277
6

Ich habe versucht , alle möglichen Lösungen, schließlich arbeitete es , wenn ich die Option deaktiviert Enable native code debuggingunter dem Debugger enginesvon Properties > Debug.

Dineshkumar
quelle
Das Überprüfen dieser Flagge hat auch den Trick für mich getan. Die Symptome waren genau wie auf dem beschriebenen Poster.
Timmos
5

Der Fehler, den ich erhielt, war "Eine passende Symboldatei wurde in diesem Ordner nicht gefunden" im Fenster "Debug => Module", selbst nachdem sowohl die DLL als auch die PDB verfügbar waren und zusammen erstellt wurden, sodass ich nicht in die von mir referenzierte Ziel-DLL debuggen konnte Hauptprojekt.

Wenn Sie dies hier posten, falls es jemandem hilft, mit "Mixed Platform" für die Ziel-DLL zu surfen. Ich habe zwei Dinge getan, um darüber hinwegzukommen:

  1. Deaktivieren Sie in der Lösung mit der Ziel-DLL "Nur mein Code" unter Extras => Optionen => Debuggen => Allgemein => Nur meinen Code aktivieren (JMC).

  2. Aktivieren Sie in den entsprechenden Projekteigenschaften => Debuggen "Native Code-Debugging aktivieren" in der Ziel-DLL-Lösung.

Impostor-Syndrom
quelle
1
Bitte formatieren Sie Ihre Antwort, um sie besser lesbar zu machen (Fett, Kursiv, Liste, Codeeinzug usw.)
Morse
1

Ohne weitere Details zu Ihrer Arbeit ist es schwierig, darüber hinauszugehen. "Der Debugger sucht nach einer Symboldatei, die dem kompilierten Code entspricht, und konnte keine in dem Ordner finden, in dem sich der kompilierte Code befindet."

Einige Dinge, über die man nachdenken sollte:

  1. Erstellen Sie Symbole als Teil Ihrer Zusammenstellung? (Überprüfen Sie die Projekteigenschaften)
  2. Verwenden Sie einen Symbolserver (wenn ja, zeigt er auf die richtige Stelle)
  3. Ist dies kompilierter Code von einem Dritten? In diesem Fall, da Sie anscheinend die Quelle haben, kompilieren Sie sie selbst.

Überlegen Sie, ob Sie Ihre Frage klären möchten, wenn Sie eine bessere Antwort wünschen. Besonders was meinst du mit "Ich möchte Symbole verwenden".

Massiv
quelle
Ich möchte die Verwendung eines Symbolservers verwenden
62
Ich erhalte immer wieder die Fehlermeldung, dass die Symboldatei in diesem Ordner nicht gefunden wurde ... Wenn ich mit eigenen Augen sehen kann, dass in dem gleichnamigen Ordner eine Symboldatei (pdb) gefunden wurde. Das sagt mir, dass die Dateien nicht gleich sind. Aber wie kann das sein, wenn ich gerade das Ding kompiliert und eine brandneue PDF-Datei bekommen habe? Dies war übrigens im Ordner bin.
SoftwareSavant
@ SoftwareSavant hast du eine Antwort gefunden?
RJP
1

Nun, die Lösung hängt von Ihrem spezifischen Problem ab. Ich habe alles versucht, was auf Stackoverflow und anderen Websites zu finden ist. Einer der Themen, denen ich gefolgt bin, ist dieser . Das hat auch nicht geholfen. Das Problem wurde sofort behoben, als ich bemerkte, dass mein ausführbares Projekt keinen Verweis auf die Bibliothek enthielt, die ich debuggen wollte. Also habe ich gerade den Verweis auf dieses Projekt hinzugefügt.

** PS: ** Dieses Problem kann auch auftreten, weil die Assembly, auf die die ausführbare Assembly verweist, möglicherweise nicht mit der in den Referenzen übereinstimmt. In diesem Fall entfernen Sie einfach die bereits vorhandene Referenz und fügen die neue hinzu.

Hoffe das hilft!

arslanahmad656
quelle
Wie füge ich dann einem Projekt in Visual Studio eine sogenannte "Referenz" hinzu?
Charles
1

Ich habe meine Debug-Symbole korrigiert und sie mit diesem Tool zur Übereinstimmung gezwungen:

chkmatch Werkzeug

Mein Problem war also, dass ich versuchte, mein Projekt zu debuggen, und der Debugger konnte nicht auf die internen Nugets-Quellen zugreifen. Ich hatte die Quelldateien des Nuget-Projekts. Trotzdem akzeptierte das Visual Studio die PDF-Dateien, denen ich sie zeigen wollte, nicht. Zeigt genau den gleichen Fehler an:

In diesem Ordner wurde keine passende Symboldatei gefunden

Also habe ich dies der .proj-Datei des Nugets-Projekts hinzugefügt:

<DebugType>full</DebugType>

Und erstellte die DLL- und PDF-Datei erneut mit der Option zum erneuten Erstellen. In der Kommandozeile lief ich:

.\ChkMatch.exe -m name_of_your.dll name_of_your.pdb    

Es sagte dies:

Schreiben in die Debug-Informationsdatei ... Ergebnis: Erfolgreich.

Großer Erfolg! Als nächstes verwies ich diese DLL stattdessen auf das Projekt, das ich zu debuggen versuchte. Ich habe gearbeitet, als ich versucht habe, das Symbol erneut zu laden.

Ich hoffe es hilft.

Koray Elbek
quelle
0

Ich fand dies, weil die Eigenschaften => Debug => Startaktion so eingestellt war, dass anstelle des Projekts ein externes Programm gestartet wurde. Die neu generierte PDF-Datei stimmte also nicht überein, da die tatsächliche Exe die falsche war.

Majjam
quelle
0

Bei BizTalk- (und anderen) Projekten kann dies daran liegen, dass bereits im GAC eine Version der Assembly vorhanden ist, die Sie debuggen möchten. Wenn Sie einen Komponententest ausführen oder zum Debuggen F5 drücken, wird lokal eine neue Version kompiliert. Die Version im GAC wird jedoch verwendet, und der neu erstellte PDB stimmt nicht mit der DLL im GAC überein.

Eine Möglichkeit, dies zu umgehen, besteht darin, die Auswahl eines Builds für alles außer Ihrem Komponententestprojekt mithilfe des Konfigurationsmanagers aufzuheben, wie unten gezeigt:

Konfigurationsmanager

Rob Bowman
quelle
0

Das gleiche passiert mir, weil die .pdb-Datei des Projekts nicht in den debug\BinOrdner kopiert wurde , sodass die Symbole nicht aus der .pdb-Datei geladen werden konnten.

Sie müssen Ihr Projekt neu erstellen und die Symbole (PDF-Datei) manuell in den debug\BinOrdner des ausführbaren Projekts kopieren .

aseman arabsorkhi
quelle
0

Ich habe versucht, Symbole für ein installiertes Nuget-Paket zu laden, das auf unserem lokalen Dev-Server veröffentlicht wurde. Ich musste stattdessen eine normale Referenz deinstallieren und hinzufügen, die aus dem Code erstellt wurde. Das hat bei mir funktioniert. Denken Sie daran, das ursprüngliche Nuget-Paket nach dem Debuggen erneut zu installieren.

monkeySeeMonkeyDo
quelle
-2

Ich habe dieses Problem auch in letzter Zeit gehabt. Konnte es beheben, indem Sie MyProject-> Eigenschaften-> Linker-> Debugging-> Debug-Informationen generieren -> "Für Debugging optimieren (/ DEBUG)" auswählten.

Alex B.
quelle