aspose.info
DE

PDB-Dateiformat - Eine Programmdatenbankdatei

Aktualisiert

Was ist eine PDB-Datei?

Eine Datei mit der Erweiterung .pdb ist eine Programmdatenbankdatei, die Debugging-Informationen für eine kompilierte ausführbare Datei (EXE/DLL) enthält. PDB-Dateien werden von Microsoft-Compilern generiert, wenn ein Anwendungsprogramm im Debugmodus kompiliert wird. Das Vorhandensein einer PDB-Datei kann beim Reverse Engineering einer ausführbaren Datei hilfreich sein, da sie wichtige Informationen zu allen Symbolen der Module enthält. Aus diesem Grund werden diese Dateien von der endgültigen ausführbaren Datei getrennt aufbewahrt. Die [DgbHelp-API] von Microsoft (https://learn.microsoft.com/en-us/windows/win32/debug/dbghelp-functions) kann eine PDB-Datei öffnen, um Informationen wie öffentliche und Exporte, globale Symbole, lokale Symbole, Typdaten, Quelldateien und Zeilennummern.

PDB-Dateiformat

PDB ist das proprietäre Dateiformat von Microsoft und wurde noch nirgendwo offiziell dokumentiert. Eine Startdokumentation ist jedoch hier verfügbar und kann referenziert werden.

PDB-Streams

PDB-Dateien bestehen aus mehreren Streams, wobei jeder Stream als virtuelle Einzeldatei fungiert und Informationen enthält. PDB-Dateischreiber können in diese Dateien schreiben, und die Datei wird erst fertiggestellt, nachdem ein explizites Commit ausgegeben wurde. Ein Compiler kann weiterhin in eine PDB-Datei schreiben, aber nur dann festschreiben, wenn der gesamte Benutzercode erfolgreich kompiliert wurde. Eine PDB-Datei besteht aus folgenden Streams:

Stream Nr.InhaltKurzbeschreibung
1Pdb (Header)Versionsinformationen und Informationen zum Verbinden dieser PDB mit der EXE
2Tpi (Type Manager)Alle Typen, die in der ausführbaren Datei verwendet werden.
3Dbi (Debug-Informationen)Enthält Abschnittsbeiträge und eine Liste von ‘Mods’
4NameMapEnthält eine Hash-String-Tabelle
4-(n+4)n Mod’s (Modulinformationen)Jeder Mod-Stream enthält Symbole und Zeilennummern für eine Zusammenstellung
n+4Globaler Symbol-HashEin Index, der die Suche in globalen Symbolen nach Namen erlaubt
n+5Öffentliches Symbol hashEin Index, der die Suche in öffentlichen Symbolen nach Adressen ermöglicht
n+6SymbolaufzeichnungenTatsächliche Symbolaufzeichnungen globaler und öffentlicher Symbole
n+7Geben Sie Hashein Vom TPI-Stream verwendeter Hash.

Jeder Stream in einer PDB-Datei besteht aus mehreren Seiten, die nicht zwingend fortlaufend nummeriert sind.

PDB-Header

Eine PDB-Datei enthält einen Header, der aus einer Signatur zum Identifizieren und Validieren des spezifischen Formats besteht. Die Länge der Signatur hängt vom PDB-Format ab. Die Kopfzeile kann länger als eine einzelne Seite sein.

PDB-Metadaten

Die PDB-Metadaten sind dafür verantwortlich, alle Komponentenstreams zu erkennen, indem sie die Länge und Seitenfolge für jeden Stream angeben. Aufträge werden nacheinander an Streams erteilt; beginnend mit 0. Es gibt auch einen ungeordneten Root-Stream, der einige der Metadaten enthält.

Verweise