/Z7
, /Zi
, /ZI
(Debuginformationsformat)
Die /Z7
Compileroptionen , /Zi
und /ZI
geben den Typ der Debuginformationen an, die für Ihr Programm erstellt wurden, und ob diese Informationen in Objektdateien oder in einer PDB-Datei (Program Database) gespeichert werden.
Syntax
/Z7
/Zi
/ZI
Hinweise
Wenn Sie eine Debugoption angeben, generiert der Compiler Symbolnamen für Funktionen und Variablen, Typinformationen und Zeilenpositionen zur Verwendung durch den Debugger. Diese symbolischen Debuginformationen können entweder in die vom Compiler erstellten Objektdateien (.obj
Dateien) oder in eine separate PDB-Datei (eine .pdb
Datei) für die ausführbare Datei eingeschlossen werden. Die Optionen für das Debuginformationsformat werden in den folgenden Abschnitten beschrieben.
Keine
Wenn keine Debuginformationsformatoption angegeben ist, erzeugt der Compiler standardmäßig keine Debuginformationen, sodass die Kompilierung schneller erfolgt.
/Z7
Die /Z7
Option erzeugt Objektdateien, die auch vollständige symbolische Debuginformationen für die Verwendung mit dem Debugger enthalten. Diese Objektdateien und alle daraus erstellten Bibliotheken können wesentlich größer sein als Dateien ohne Debuginformationen. Die symbolischen Debuginformationen umfassen die Namen und Typen von Variablen, Funktionen und Zeilennummern. Vom Compiler wird keine PDB-Datei erstellt. Eine PDB-Datei kann jedoch weiterhin aus diesen Objektdateien oder Bibliotheken generiert werden, wenn der Linker die /DEBUG
Option übergeben wird.
Für Verteiler von Debugversionen von Drittanbieterbibliotheken gibt es einen Vorteil, wenn keine PDB-Datei vorhanden ist. Die Objektdateien für alle vorkompilierten Header sind jedoch während der Bibliotheksverknüpfungsphase und für das Debuggen erforderlich. Wenn die .pch
Objektdatei nur Typinformationen (und keinen Code) enthält, müssen Sie beim Erstellen der Bibliothek auch die /Yl
Option (PCH-Referenz für Debugbibliothek einfügen) verwenden, die standardmäßig aktiviert ist.
Die veraltete /Gm
Option (Minimale Neuerstellung aktivieren) ist nicht verfügbar, wenn /Z7
angegeben wird.
/Zi
Die /Zi
Option erzeugt eine separate PDB-Datei, die alle symbolischen Debuginformationen für die Verwendung mit dem Debugger enthält. Die Debuginformationen sind nicht in den Objektdateien oder ausführbaren Dateien enthalten, sodass sie viel kleiner sind.
Die Verwendung von /Zi
wirkt sich nicht auf Optimierungen aus. /Zi
Impliziert /debug
jedoch . Weitere Informationen finden Sie unter /DEBUG
Generieren von Debuginformationen.
Wenn Sie sowohl als /clr
auch /Zi
angeben, wird das DebuggableAttribute Attribut nicht in den Assemblymetadaten platziert. Wenn Sie es möchten, müssen Sie es im Quellcode angeben. Dieses Attribut kann Auswirkungen auf die Laufzeitleistung der Anwendung haben. Weitere Informationen dazu, wie sich das Attribut auf die Debuggable
Leistung auswirkt und wie Sie die Auswirkungen auf die Leistung ändern können, finden Sie unter Vereinfachen des Debuggens eines Images.
Der Compiler benennt die PDB-Datei <project>.pdb
, wobei <project>
der Name Ihres Projekts ist. Wenn Sie eine Datei außerhalb eines Projekts kompilieren, erstellt der Compiler eine PDB-Datei mit dem Namen VC<x>.pdb
, wobei <x>
eine Verkettung der Haupt- und Nebenversionsnummer der verwendeten Compilerversion ist. Der Compiler bettet den Namen des PDB und eine identifizierende Zeitstempelsignatur in jede Objektdatei ein, die mit dieser Option erstellt wurde. Dieser Name und die Signatur verweisen den Debugger auf den Speicherort der symbolischen Und Zeilennummerninformationen. Der Name und die Signatur in der PDB-Datei müssen mit der ausführbaren Datei übereinstimmen, damit Symbole in den Debugger geladen werden. Der WinDBG-Debugger kann nicht übereinstimmende Symbole mithilfe des .symopt+0x40
Befehls laden. Visual Studio verfügt nicht über eine ähnliche Option zum Laden nicht übereinstimmender Symbole.
Wenn Sie eine Bibliothek aus Objekten erstellen, die mit /Zi
kompiliert wurden, muss die zugehörige PDB-Datei verfügbar sein, wenn die Bibliothek mit einem Programm verknüpft ist. Das bedeutet, wenn Sie die Bibliothek verteilen, müssen Sie auch die PDB-Datei verteilen. Um eine Bibliothek zu erstellen, die Debuginformationen enthält, ohne PDB-Dateien zu verwenden, müssen Sie die /Z7
Option auswählen. Wenn Sie die Optionen für vorkompilierte Header verwenden, werden Debuginformationen sowohl für den vorkompilierten Header als auch für den rest des Quellcodes in der PDB-Datei platziert.
/ZI
Die /ZI
Option ähnelt /Zi
, erzeugt jedoch eine PDB-Datei in einem Format, das das Feature Bearbeiten und Fortfahren unterstützt. Sie müssen diese Option verwenden, um die Features "Bearbeiten" und "Debuggen fortsetzen" zu verwenden. Das Feature "Bearbeiten und Fortfahren" ist nützlich für die Produktivität von Entwicklern, kann jedoch Probleme in Bezug auf Codegröße, Leistung und Compilerkonformität verursachen. Da die meisten Optimierungen mit Bearbeiten und Fortfahren nicht kompatibel sind, werden alle #pragma optimize
Anweisungen im Code durch die Verwendung /ZI
deaktiviert. Die /ZI
Option ist auch mit der Verwendung des vordefinierten Makros nicht kompatibel. Code, der__LINE__
mit /ZI
kompiliert wird, kann nicht als Vorlagenargument ohne Typ verwendet __LINE__
werden, kann jedoch __LINE__
in Makroerweiterungen verwendet werden.
Die /ZI
Option erzwingt, dass sowohl die /Gy
Optionen (Aktivieren Function-Level Verknüpfen) als /FC
auch (Vollständiger Pfad der Quellcodedatei in der Diagnose) bei der Kompilierung verwendet werden.
/ZI
ist mit /clr
(Common Language Runtime-Kompilierung) nicht kompatibel.
Hinweis
Die /ZI
Option ist nur in den Compilern für x86- und x64-Prozessoren verfügbar. Diese Compileroption ist in den Compilern für ARM-Prozessoren nicht verfügbar.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Navigieren Sie zur Eigenschaftenseite Konfigurationseigenschaften>C/C++>Allgemein.
Ändern Sie die Eigenschaft Debuginformationsformat . Klicken Sie auf OK, um die Änderungen zu speichern.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe DebugInformationFormat.
Siehe auch
MSVC-Compileroptionen
Befehlszeilensyntax des MSVC-Compilers