Symbole und Symboldateien
Wenn Anwendungen, Bibliotheken, Treiber oder Betriebssysteme verknüpft sind, erstellt der Linker, der die .exe und .dll Dateien erstellt, auch eine Reihe zusätzlicher Dateien, die als Symboldateien bezeichnet werden.
Symboldateien enthalten eine Vielzahl von Daten, die beim Ausführen der Binärdateien eigentlich nicht benötigt werden, die aber beim Debuggen sehr nützlich sein können.
In der Regel können Symboldateien Folgendes enthalten:
Globale Variablen
Lokale Variablen
Funktionsnamen und die Adressen ihrer Einstiegspunkte
Framezeiger-Auslassungsdatensätze (Frame Pointer Omission, FPO)
Quellzeilennummern
Jedes dieser Elemente wird einzeln als Symbol bezeichnet. Beispielsweise kann eine Einzelne Symboldatei Myprogram.pdb mehrere hundert Symbole enthalten, einschließlich globaler Variablen und Funktionsnamen und Hunderte von lokalen Variablen. Softwareunternehmen veröffentlichen häufig zwei Versionen jeder Symboldatei: eine vollständige Symboldatei, die sowohl öffentliche Symbole als auch private Symbole enthält, und eine reduzierte (strippede) Datei, die nur öffentliche Symbole enthält. Ausführliche Informationen finden Sie unter Öffentliche und private Symbole.
Beim Debuggen müssen Sie sicherstellen, dass der Debugger auf die Symboldateien zugreifen kann, die dem Ziel zugeordnet sind, das Sie debuggen. Sowohl livedebuggen als auch Debuggen von Absturzabbilddateien erfordern Symbole. Sie müssen die richtigen Symbole für den Code abrufen, den Sie debuggen möchten, und diese Symbole in den Debugger laden.
Windows-Symbole
Windows behält seine Symbole in Dateien mit der Erweiterung .pdb.
Der Compiler und der Linker steuern das Symbolformat. Der Visual C++-Linker platziert alle Symbole in PDB-Dateien.
Das Windows-Betriebssystem wurde in zwei Versionen erstellt. Der kostenlose Build (oder Einzelhandelsbuild) verfügt über relativ kleine Binärdateien, und der überprüfte Build (oder Debugbuild) verfügt über größere Binärdateien mit mehr Debugsymbolen im Code selbst. Überprüfte Builds waren unter älteren Versionen von Windows vor Windows 10 Version 1803 verfügbar. Jeder dieser Builds verfügte über eigene Symboldateien. Beim Debuggen eines Ziels unter Windows müssen Sie die Symboldateien verwenden, die dem Build von Windows auf dem Ziel entsprechen.
In der folgenden Tabelle sind mehrere Verzeichnisse aufgeführt, die in einer Windows-Standardsymbolstruktur vorhanden sind:
Verzeichnis | Enthält Symboldateien für |
---|---|
ACM |
Microsoft Audio Compression Manager-Dateien |
COM |
Ausführbare Dateien (.com) |
CPL |
Systemsteuerung Programme |
DLL |
Dynamisch verknüpfte Bibliotheksdateien (.dll) |
DRV |
Treiberdateien (.drv) |
EXE |
Ausführbare Dateien (.exe) |
SCR |
Bildschirmschonerdateien |
SYS |
Treiberdateien (.sys) |