Programmdatenbankdateien (C++)
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium und Ultimate |
Eine Programmdatenbankdatei (PDB) enthält Debug- und Projektzustandsinformationen, die die inkrementelle Verknüpfung einer Debugkonfiguration des Programms ermöglichen. Eine PDB-Datei wird bei einem Build mit /ZI oder /Zi (bei C /C++) erstellt.
In Visual C++ wird die vom Compiler erstellte PDB-Datei von der /Fd-Option benannt. Wenn Sie in Visual Studio ein Projekt mithilfe von Assistenten erstellen, wird durch die /Fd-Option eine PDB-Datei mit dem Namen Project.PDB erstellt.
Wird die C/C++-Anwendung unter Verwendung eines Makefiles erstellt und /ZI oder /Zi ohne /Fd angegeben, erhalten Sie zwei PDB-Dateien:
VC80.PDB (Oder allgemeiner, VCx0.PDB, wobei x für die Visual C++-Version steht.) In dieser Datei werden alle Debuginformationen für die einzelnen OBJ-Dateien gespeichert; sie wird im selben Verzeichnis wie das Projektmakefile abgelegt.
Projekt.PDB In dieser Datei werden alle Debuginformationen für die EXE-Datei gespeichert. Bei C/C++ befindet sich die Datei im Unterverzeichnis \debug.
Jedes Mal, wenn eine OBJ-Datei erstellt wird, führt der C/C++-Compiler Debuginformationen mit VCx0.PBD zusammen. Die eingefügten Informationen umfassen zwar Typinformationen, jedoch keine Symbolinformationen, wie Funktionsdefinitionen. Selbst wenn jede Quelldatei allgemeine Headerdateien, z. B. <windows.h>, enthält, werden die Typdefinitionen aus diesen Headerdateien nur einmal gespeichert und nicht in jeder einzelnen OBJ-Datei.
Der Linker erstellt die Datei Projekt.PDB, die Debuginformationen für die EXE-Datei des Projekts enthält. Die Datei Projekt.PDB enthält nicht nur die in VCx0.PDB gespeicherten Typinformationen, sondern alle Debuginformationen, einschließlich der Funktionsprototypen. Beide PDB-Dateien unterstützen inkrementelle Aktualisierungen. Der Linker bettet den Pfad zur PDB-Datei in die erstellte EXE- bzw. DLL-Datei ein.
Der Visual Studio-Debugger verwendet den Pfad zur PDB-Datei in der EXE- bzw. DLL-Datei, um die Projekt.PDB-Datei zu finden. Wenn die PDB-Datei vom Debugger nicht am angegebenen Speicherort gefunden wird oder der Pfad ungültig ist (z. B., weil das Projekt auf einen anderen Computer verschoben wurde), durchsucht der Debugger den Pfad mit der EXE-Datei sowie die Symbolpfade, die im Dialogfeld Optionen (Ordner Debugging, Knoten Symbole) angegeben sind. Wenn der Debugger keine PDB-Datei finden kann, wird ein Dialogfeld mit dem Namen Symbole suchen angezeigt, das Ihnen die Suche nach Symbolen oder das Hinzufügen zusätzlicher Speicherorte zum Suchpfad ermöglicht.
Wichtig
Der Debugger lädt nur eine PDB-Datei für eine Binärdatei, die genau mit der PDB übereinstimmt, die bei der Erstellung der Binärdatei erstellt wurde (das heißt, die PDB muss das Original oder eine Kopie sein). Da der Compiler mehrere Faktoren berücksichtigt, wenn eine Binärdatei erstellt wird, kann sich das tatsächliche Layout einer Binärdatei ändern, auch wenn der Code an sich nicht geändert wurde. Weitere Informationen finden Sie im MSDN-Blogbeitrag Why does Visual Studio require debugger symbol files to *exactly* match the binary files that they were built with?
Siehe auch
Konzepte
Programmdatenbankdateien (C#, F# und Visual Basic)
Weitere Ressourcen
Einstellungen und Vorbereitung für das Debuggen
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
März 2011 |
Informationen und Links bezüglich der erforderlichen genauen Übereinstimmung von PDB-Dateien wurden hinzugefügt. |
Informationsergänzung. |