Was ist eine PDB-Datei?


252

Was ist eine PDB-Datei und wie kann ich sie aus dem Release-Ordner ausschließen, wenn ich meine Lösung neu erstelle?


17
pdb ist eine Programmdatenbankdatei und wird beim Kompilieren erstellt. Diese Datei enthält Informationen zum Debuggen und zum Projektstatus, mit denen eine Debug-Konfiguration Ihres Programms schrittweise verknüpft werden kann.
Pavanred

@pavanred Sind Sie sicher, dass der C # -Compiler auch inkrementelle Verknüpfungen durchführt? Ich habe nur in der C ++ - Welt davon gehört. In einem C ++ - Projekt aktivieren / deaktivieren Sie die inkrementelle Verknüpfung über Projekteigenschaften. Gibt es auch eine Option im C # -Projekt?
RBT

Antworten:


236

Eine PDB-Datei enthält Informationen, mit denen der Debugger arbeiten kann. In einem Release-Build sind ohnehin weniger Informationen enthalten als in einem Debug-Build. Wenn Sie jedoch möchten, dass es überhaupt nicht generiert wird, gehen Sie zu den Build-Eigenschaften Ihres Projekts, wählen Sie die Release-Konfiguration aus, klicken Sie auf "Erweitert ..." und wählen Sie unter "Debug-Info" die Option "Keine".


2
@Jon Hilft es, dem Benutzer zusätzliche Informationen bereitzustellen, wenn die Anwendung bei der Verwendung abstürzt? (dh hilft es mit dem JIT-Fenster, anstatt "Dieses Programm muss beendet werden, senden Sie einen Windows-Fehlerbericht")
Jared Harley

19
Denken Sie daran, dass Sie diese wahrscheinlich in Ihren Debug-Releases behalten sollten, da Ausnahmen auf eine bestimmte Zeile in Ihrem Code zurückgeführt werden können. Ohne die Symbole in der PDF-Datei fällt es Ihnen schwer, bestimmte Probleme zu lokalisieren, um sie zu lösen. Sie müssen sie auch nicht unbedingt von Release-Builds ausschließen, da die zusätzlichen Informationen in einem großen Bericht manchmal sehr nützlich sein können.
Darbio

4
@Jared: Ja, es enthält eine Stapelverfolgung der Ausnahme, die auf eine bestimmte Funktion und Codezeile verweist.
Darbio

1
@Jared: Was meinst du mit "dem JIT-Fenster"? Es ist unwahrscheinlich, dass dem Benutzer viel mehr Informationen zur Verfügung gestellt werden. Sie können jedoch bei Bedarf einen Debugger an einen Release-Build anhängen. Normalerweise würden Sie es jedoch nicht für Endbenutzeranwendungen einschließen. Nur weil es in den Release-Ordner kopiert wurde, heißt das natürlich nicht, dass Sie es im Installationsprogramm
Jon Skeet

3
@Ata: PDB, nicht PDF. Bitte trennen Sie die beiden in Ihrem Kopf - es handelt sich um völlig unterschiedliche Dateiformate für unterschiedliche Zwecke. Das Einfügen eines PDB würde kein besonderes Problem darstellen. Es mag die Arbeit eines Hackers etwas erleichtern, aber ist das ein besonderes Anliegen für Sie? Im Allgemeinen kann .NET in den meisten Fällen relativ einfach dekompiliert werden. Wenn Sie sich darüber Sorgen machen, ist es keine gute Lösung, den PDB einfach nicht zu versenden.
Jon Skeet

130

Ich hatte mir ursprünglich die Frage " Benötige ich eine PDB-Datei, die auf dem Computer meines Kunden bereitgestellt wurde? " Gestellt und nach dem Lesen dieses Beitrags beschlossen, die Datei auszuschließen.

Bis heute hat alles gut funktioniert, als ich herausfinden wollte, warum in einem Meldungsfeld mit einem Exception.StackTracedie Datei- und Zeilennummerninformationen fehlten - erforderlich für die Fehlerbehebung bei der Ausnahme. Ich habe diesen Beitrag erneut gelesen und das wichtigste Informationsnugget gefunden: Obwohl der PDB für die Ausführung der App nicht erforderlich ist, müssen die Datei- und Zeilennummern in der StackTraceZeichenfolge vorhanden sein. Ich habe die PDB-Datei in den ausführbaren Ordner aufgenommen und jetzt ist alles in Ordnung.


2
Dies ist ein sehr wichtiger Teil, den Sie accepted answerhier nicht erwähnen sollten.
Monku

85

PDB ist eine Abkürzung für P rogramm D ata B ase. Wie der Name schon sagt, handelt es sich um ein Repository (persistenter Speicher wie Datenbanken), in dem Informationen verwaltet werden, die zum Ausführen Ihres Programms im Debug-Modus erforderlich sind. Es enthält viele wichtige relevante Informationen, die beim Debuggen Ihres Codes (in Visual Studio) erforderlich sind, z. B. an den Stellen, an denen Sie Haltepunkte eingefügt haben, an denen der Debugger in Visual Studio voraussichtlich brechen wird.

Dies ist der Grund, warum Visual Studio häufig die Haltepunkte nicht erreicht, wenn Sie die *.pdbDateien aus Ihren Debug-Ordnern entfernen . Der Visual Studio-Debugger kann Ihnen mithilfe von *.pdbDateien auch die genaue Zeilennummer der Codedatei mitteilen, bei der eine Ausnahme in einem Stack-Trace aufgetreten ist . Daher sind PDF-Dateien für Entwickler beim Debuggen eines Programms ein Segen.

Im Allgemeinen wird nicht empfohlen, die Generierung von *.pdbDateien auszuschließen . Vom Standpunkt der Produktionsfreigabe aus sollten Sie die PDF-Dateien erstellen, aber nicht im Produktinstallationsprogramm an den Kunden senden. Bewahren Sie alle generierten PDB-Dateien auf einem Symbolserver auf, von dem aus sie bei Bedarf in Zukunft verwendet / referenziert werden können. Speziell für Fälle, in denen Sie Probleme wie Prozessabstürze debuggen. Wenn Sie mit der Analyse der Crash-Dump-Dateien beginnen und Ihre *.pdbwährend des Erstellungsprozesses erstellten Originaldateien nicht erhalten bleiben, kann Visual Studio die genaue Codezeile, die den Absturz verursacht, nicht erkennen .

Wenn Sie die Generierung von *.pdbDateien für eine Version weiterhin deaktivieren möchten, gehen Sie zu den Eigenschaften des Projekts -> Registerkarte "Erstellen" -> Klicken Sie auf die AdvancedSchaltfläche -> Wählen Sie noneaus dem Dropdown-Feld "Debug-Info" -> Drücken Sie, OKwie im folgenden Schnappschuss gezeigt .

Keine Debug-Info-Einstellung für ein C # -Projekt

Hinweis : Diese Einstellung muss für die Build-Konfigurationen "Debug" und "Release" separat vorgenommen werden.


13

Eine PDB-Datei enthält Informationen, die vom Debugger verwendet werden. Es ist nicht erforderlich, Ihre Anwendung auszuführen, und es muss nicht in Ihrer veröffentlichten Version enthalten sein.

Sie können die Erstellung von PDF-Dateien in Visual Studio deaktivieren. Wenn Sie über die Befehlszeile oder ein Skript erstellen, lassen Sie den /DebugSchalter weg .


2
Der Release-Modus erstellt nach wie vor standardmäßig PDBs. Sie können die Projekteigenschaften ändern, um sie jedoch zu deaktivieren.
Jon Skeet

Jep; Es wird immer noch mit einem Standardprojekt veröffentlicht.
Andrew Barber

Ich habe es gerade überprüft und erhalte standardmäßig auch eines, wenn ich Visual Studio verwende.
Mark Byers

4

Die Programm-Debug-Datenbankdatei (pdb) ist ein Dateiformat von Microsoft zum Speichern von Debugging-Informationen.

Wenn Sie ein Projekt mit Visual Studio oder einer Eingabeaufforderung erstellen, erstellt der Compiler diese Symboldateien.

Überprüfen Sie Microsoft Docs

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.