/Z7
, , /Zi
/ZI
(Debuginformationsformat)
Die /Z7
Optionen und /Zi
/ZI
Compileroptionen geben den Typ der für Ihr Programm erstellten Debuginformationen an und geben an, ob diese Informationen in Objektdateien oder in einer Programmdatenbankdatei (PDB)-Datei gespeichert werden.
Syntax
/Z7
/Zi
/ZI
Hinweise
Wenn Sie eine Debugoption angeben, erzeugt der Compiler Symbolnamen für Funktionen und Variablen, Typinformationen und Zeilenpositionen für die Verwendung durch den Debugger. Diese symbolischen Debuginformationen können entweder in die vom Compiler erstellten Objektdateien (.obj
Dateien) oder in einer separaten PDB-Datei (einer .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 ist.
/Z7
Die /Z7
Option erzeugt Objektdateien, die auch vollständige symbolische Debuginformationen für die Verwendung mit dem Debugger enthalten. Diese Objektdateien und alle bibliotheken, die aus ihnen erstellt wurden, können wesentlich größer sein als Dateien, die keine Debuginformationen enthalten. 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 Distributoren von Debugversionen von Drittanbieterbibliotheken gibt es einen Vorteil, keine PDB-Datei zu haben. Die Objektdateien für alle vorkompilierten Header sind jedoch während der Bibliotheksverknüpfungsphase und für das Debuggen erforderlich. Wenn in der .pch
Objektdatei nur Typinformationen (und kein Code) vorhanden sind, müssen Sie beim Erstellen der Bibliothek auch die /Yl
Option "PCH-Referenz für Debugbibliothek einfügen" verwenden, die standardmäßig aktiviert ist.
/Gm
Die Option "Minimale Neuerstellung aktivieren" ist bei /Z7
Angabe nicht verfügbar.
/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, wodurch sie wesentlich kleiner werden.
Die Verwendung wirkt /Zi
sich nicht auf Optimierungen aus. Bedeutet /debug
jedoch, /Zi
dass . Weitere Informationen finden Sie unter /DEBUG
(Generieren von Debuginformationen).
Wenn Sie beide /Zi
und /clr
das Attribut angeben, wird das DebuggableAttribute Attribut nicht in den Assemblymetadaten platziert. Wenn Sie dies wünschen, müssen Sie sie 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 "Einfacheres Debuggen eines Bilds".
Der Compiler benennt die PDB-Datei <project>.pdb
. Dabei <project>
handelt es sich um den Namen Ihres Projekts. Wenn Sie eine Datei außerhalb eines Projekts kompilieren, erstellt der Compiler eine PDB-Datei namens VC<x>.pdb
, wobei <x>
es sich um eine Verkettung der Haupt- und Nebenversionsnummer der verwendeten Compilerversion handelt. Der Compiler bettet den Namen des PDB und eine identifizierende Zeitstempelsignatur in jede Objektdatei ein, die mit dieser Option erstellt wurde. Dieser Name und diese Signatur verweisen auf den Debugger auf die Position symbolischer und Zeilennummerninformationen. Der Name und die Signatur in der PDB-Datei müssen mit der ausführbaren Datei übereinstimmen, damit Symbole im 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 heißt, 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 vorkompilierten Headeroptionen 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 ist ähnlich, /Zi
aber es erzeugt eine PDB-Datei in einem Format, das das Feature "Bearbeiten" und "Weiter" unterstützt. Zum Verwenden von Bearbeitungs- und Fortsetzungsdebuggingfeatures müssen Sie diese Option verwenden. Das Feature "Bearbeiten" und "Weiter" ist für Entwicklerproduktivität nützlich, kann jedoch Probleme in Codegröße, Leistung und Compilerkonformität verursachen. Da die meisten Optimierungen nicht mit "Bearbeiten" und "Weiter" kompatibel sind, werden mithilfe von /ZI
Anweisungen in Ihrem Code deaktiviert #pragma optimize
. Die /ZI
Option ist auch nicht kompatibel mit der Verwendung des__LINE__
vordefinierten Makros. Code, der kompiliert wird/ZI
, kann nicht als Argument mit Nichttypvorlage verwendet __LINE__
werden, kann jedoch __LINE__
in Makroerweiterungen verwendet werden.
Die /ZI
Option erzwingt sowohl die /Gy
Optionen (Verknüpfung auf Funktionsebene aktivieren) als /FC
auch (Vollständiger Pfad der Quellcodedatei in der Diagnose), die in der Kompilierung verwendet werden sollen.
/ZI
ist nicht kompatibel mit /clr
(Common Language Runtime Compilation).
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
Syntax für die MSVC-Compilerbefehlszeile