/Z7, , /Zi/ZI (Debuginformationsformat)

Die /Z7Optionen 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 /debugjedoch, /Zi dass . Weitere Informationen finden Sie unter /DEBUG (Generieren von Debuginformationen).

Wenn Sie beide /Zi und /clrdas 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 /Zikompiliert 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, /Ziaber 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

  1. Ö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).

  2. Navigieren Sie zur Eigenschaftenseite Konfigurationseigenschaften>C/C++>Allgemein.

  3. Ändern Sie die Eigenschaft Debuginformationsformat . Klicken Sie auf OK, um die Änderungen zu speichern.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile