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)