DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 121366 - Geändert am: Freitag, 5. August 2005 - Version: 3.1

 

Auf dieser Seite

Zusammenfassung

Die Erweiterung .PDB steht für "Programmdatenbank." Es enthält das neue Format zum Speichern von Debuginformationen, der eingeführt wurde in Visual C++, Version 1.0. Die PDB-Datei wird in Zukunft auch andere Projektinformationen Zustand halten. Eine der wichtigsten Motivation für die Änderung im Format war damit Inkrementelles Verknüpfen Debug-Versionen von Programmen, eine Änderung in Visual C++ Version 2.0 eingeführt.

Die .DBG-Erweiterung steht für "Debug". Die .DBG-Dateien mit der 32-Bit-NT-Toolset erstellte sind das portable ausführbare Datei (PE) Dateiformat. Sie enthalten die Abschnitte mit COFF FPO, und in einigen Fällen Codeansichtsinformationen Informationen. Der integrierte Visual C++-Debugger kann .DBG-Dateien in diesem Format lesen, aber Sie COFF-Symbol Abschnitte ignoriert und nach Codeansichtsinformationen Informationen sucht.

Wenn Sie müssen bestimmen, welche Informationen in einer .DBG-Datei enthalten ist, können Geben Sie Folgendes an der Eingabeaufforderung:
Dumpbin sample.dbg/symbol.
				
Hinweis: der Pfad möglicherweise Verzeichnisse für DUMPBIN.exe und MSdis100.dll enthalten:
Path=%Path%;C:\Program Files\DevStudio\VC\bin;C:\Msssdk\bin
				
Weitere Informationen zu DUMPBIN finden Sie im folgenden Artikel der Microsoft Knowledge Base:
177429  (http://support.microsoft.com/kb/177429/ ) Beispiele für die Ausgabe von DUMPBIN

Weitere Informationen

Die PDB-Dateien

Während frühere, 16-Bit-Versionen von Visual C++ PDB-Dateien verwendet, wurde vom Linker Debuggen in Ihnen gespeicherte Informationen am Ende der exe- oder DLL-Datei angehängt. In den Versionen von Visual C++ oben erwähnten wurden vom Linker und des integrierten Debuggers geändert, um PDB-Dateien direkt während den Debugprozess verwendet werden können dadurch beseitigen erhebliche Datenmengen arbeiten, für den Linker und auch die umständliche CVPACK-Grenze von 64 KB Typen umgehen.

Weitere Informationen zu CVPACK Einschränkungen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
112335  (http://support.microsoft.com/kb/112335/ ) Fehler: CK1020 oder CK4009 bei Typinformationen 64 KB überschreitet, ist aufgetreten
<project>Standardmäßig beim Erstellen der Projekte, die durch die Visual Workbench, generiert wird der Compiler-Option/Fd verwendet, um die PDB-Datei in <projekt> PDB umbenennen. Daher müssen Sie nur eine PDB-Datei für das gesamte Projekt.

Wenn Sie ausführen, Makefiles, die nicht von Visual Workbench generiert wurden und der/FD wird nicht mit/Zi verwendet, werden Sie sich mit zwei PDB-Dateien beenden:
  • VCx0.PDB (wobei "X" die Hauptversion des entsprechenden Visual C++ entweder "2"oder "4" bezeichnet), der alle Debuginformationen für die einzelnen .OBJ-Dateien gespeichert. Es befindet sich in das Verzeichnis, in denen das Makefile-Projekt befindet.
  • <project><projekt> PDB, die alle Debuginformationen für die resultierende exe-Datei speichert. Es befindet sich im Unterverzeichnis \WINDEBUG.
Warum zwei Dateien? <project>Wenn der Compiler ausgeführt wird, kennen nicht es den Namen der EXE-Datei in der die .OBJ-Dateien verknüpft werden, damit der Compiler Ablegen der Informationen in <projekt> PDB kann nicht. Die zwei Dateien speichern unterschiedliche Informationen. Jedes Mal, Sie eine .obj-Datei kompilieren, führt der Compiler die Debuginformationen in VCX0.PDB zusammen. Nicht wird in den Symbol-Informationen wie Funktionsdefinitionen versetzt. Es wird nur in Informationen zu Typen. Ein Vorteil dieser ist, wenn jede Quelldatei allgemeine Headerdateien, z. B. <windows.h> enthält, die Typdefinitionen aus diesen Headerdateien nur einmal, statt in jede .obj-Datei gespeichert werden.

<project>Beim Ausführen des Linker erstellt <projekt> PDB, die Debuginformationen für EXE-Datei des Projekts enthält. <project>Alle Debuggen Informationen, einschließlich Funktionsprototypen und alles andere, wird in <projekt> PDB nicht nur die Typinformationen, die in VCX0.PDB gefunden eingefügt. Die beiden Arten von PDB-Dateien freigeben der gleichen Erweiterungs, da Sie architektonisch ähneln, werden; beide inkrementelle Updates zulassen. Dennoch speichern Sie eigentlich unterschiedliche Informationen.

<project>Neue Visual C++-Debugger verwendet die <projekt> PDB-Datei direkt vom Linker erstellt, und bettet den absoluten Pfad der PDB in der exe- oder DLL-Datei. Wenn der Debugger die PDB-Datei an diesem Speicherort nicht finden können oder wenn der Pfad ungültig ist (Wenn Sie z. B. das Projekt zu einem anderen Computer verschoben wurde), der Debugger sucht es im aktuellen Verzeichnis.

Die .DBG-Dateien

Der integrierte Visual C++-Debugger kann auch .DBG-Dateien verwenden, solange Sie von einem enthaltenden Codeansichtsinformationen Binärformat Debugausgabe durchgeführt werden. Diese sind nützlich zum Debuggen, wenn der Quellcode nicht verfügbar ist. Auch ohne die Quelle können mit .DBG-Dateien legen Sie Haltepunkte auf Funktionen, Überwachungsvariablen, und finden Sie unter die Funktionen in der Aufrufliste. Sie sind auch für das OLE-RPC-Debuggen erforderlich.

Eine Einschränkung muss darauf hingewiesen werden: Wenn Sie mit Symbolen aus einer .DBG-Datei arbeiten, müssen Sie die vollständig ergänzten Namen verwenden. Um bei einem Aufruf der Windows-SndPlaySound-Funktion einen Haltepunkt festzulegen, würden Sie z. B. _sndPlaySoundA@8 als Speicherort angeben.

Es sind tatsächlich zwei .DBG Dateiformate. Das alte Format war ziemlich eine Weile in der 16-Bit-Welt vorhanden. Z. B. da das Format der COM-Dateien eine einfache binäres Bild in den Speicher geladen ist, konnte die Codeansichtsinformationen Debuginformationen nicht an das Ende der Datei angehängt werden weil die Dateigröße 64 KB für für eine COM-Datei überschreiten möglicherweise. Daher wurde die Symbolinformationen stattdessen in einer separaten .DBG-Datei eingefügt werden mit nur Codeansichtsinformationen Informationen darin. Eine EXE-Datei mit der Option /strip unter CVPACK konnte auch .DBG-Dateien generiert werden.

Für 32-Bit-.EXEs, Visual C++ Version 2.x und 4.x Lesen des Debuggers Symbol Handler das alte Format nicht. Stattdessen liest er das in den Windows NT-.DBG-Dateien verwendete Format für die Verwendung mit der DLL-Systemdateien bereitgestellten. Diese .DBG-Dateien im Dateiformat portable ausführbare Datei (PE) sind und Abschnitten mit COFF FPO, und in einigen Fällen Codeansichtsinformationen symbolische Informationen enthalten. Neue Visual C++-Debugger liest .DBG-Dateien in diesem Format nur. Darüber hinaus verwendet nur die Codeansichtsinformationen Informationen, die andere Symbol-Abschnitte ignoriert.

Es ist möglich, Debuginformationen aus einer PE-Datei und in einer .DBG-Datei für die Verwendung von Debuggern gespeichert. Damit dies funktioniert muss der Debugger wissen, ob die Debuginformationen in einer separaten Datei oder nicht finden und gibt an, ob die Informationen aus der Datei oder nicht entfernt wurde. Eine Methode wäre für den Debugger durchsuchen die ausführbare Datei Debug-Informationen suchen. Allerdings wurde, speichern Sie den Debugger aus der Datei suchen zu müssen ein Datei-Eigenschaft-Feld (IMAGE_FILE_DEBUG_STRIPPED) erfunden, der angibt, dass die Datei entfernt wurde. Debugger können Suchen Sie nach diesem Feld in der PE-Dateiheader schnell feststellen, ob die Debuginformationen in der Datei vorhanden ist.

Um eine .DBG-Datei in diesem Format zu erstellen, können Sie REBASE.EXE, die mit dem Win32-SDK bereitgestellt wird. Bitte finden Sie in der Win32 SDK-Dokumentation weitere Details.

Während der Verkaufsversionen von Windows NT sind Debugsymbole aus die Systembinärdateien und Treiber entfernt und in separaten .DBG-Dateien gespeichert. Dies ist notwendig, da der Windows NT Kernel-Debugger diese .DBG-Dateien verwenden und debugging-Symbole auch für optimierte Treiber bereitstellen kann. Beachten Sie jedoch, dass der integrierte Visual C++-Debugger nicht geschützten Modus Kernelcode zu debuggen konzipiert ist.

Die Windows NT-Symboldateien befinden sich in einem Debug-Unterverzeichnis des Verzeichnisses \SUPPORT auf die Verkaufsversion von Windows NT-CD. Diese Dateien müssen von der CD-ROM auf Ihre Festplatte kopiert werden. Für Benutzer auf dem Zielcomputer Debugger Modus debuggen müssen .DBG-Symbole in Windows NT-\<winnt>\SYMBOLS-Verzeichnis des Zielsystems vorhanden sein (<winnt> ist das Verzeichnis, in denen Windows NT installiert ist). Das neue Visual C++ Setup-Programm installiert Symbolgröße "NT System Symbole Setup" in der Programmgruppe. Sie können es verwenden, automatisch die .DBG-Dateien von der Windows NT Workstation-CD-Festplatte in die richtige Verzeichnisstruktur auf der Festplatte kopiert. Diese Methode funktioniert nicht bei Windows NT Server 4.0-CD, da die .DBG-Dateien im komprimierten Format gespeichert werden.

Platzieren Sie für das Kerneldebuggen .DBG-Dateien in einer Symbole Struktur unterhalb des Verzeichnisses durch die _NT_SYMBOL_PATH-Umgebungsvariable (z. B. C:\DEBUG\SYMBOLS) angegeben. Kerneldebuggen ist möglich, mit einem minimalen Satz von bestehend aus Symbole für alle Treiber im Verzeichnis SYMBOLS\SYS (*.SYS) und Symbole für Ntoskrnl.exe und HAL.dll in den Verzeichnissen SYMBOLS\EXE und SYMBOLS\DLL bzw. Symbole. Weitere Informationen zum Kerneldebuggen finden Sie in der Diskussion zum Thema Kerneldebuggen im Windows NT DDK Programmer's Guide.

Zwar ist es theoretisch möglich, um aus einer PDB-Datei wieder in eine .DBG-Datei zu konvertieren, ist es keine einfache Aufgabe. Zu diesem Zeitpunkt wissen wir keine solchen Tools. Wenn wir eines solchen Tools hören, werden wir in diesem Artikel der Microsoft Knowledge Base aktualisiert.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ 5.0 Standard Edition
  • Microsoft Visual C++ 6.1
Keywords: 
kbmt kbbug kbdebug kbide kbinfo KB121366 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 121366  (http://support.microsoft.com/kb/121366/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Zurückgezogener KB-ArtikelDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store