/Z7, /Zi, /ZI (Debuginformationsformat)

Die /Z7Compileroptionen /Zi, und /ZI geben den Typ der Debuginformationen an, die für das Programm erstellt werden, und geben an, ob diese Informationen in Objektdateien oder in einer Programmdatenbankdatei (PDB) gespeichert werden.

Syntax

/Z7
/Zi
/ZI

Bemerkungen

Wenn Sie eine Debugoption angeben, erzeugt der Compiler Symbolnamen für Funktionen und Variablen, Typinformationen und Zeilenpositionen zur Verwendung durch den Debugger. Diese symbolischen Debuginformationen können entweder in den vom Compiler erstellten Objektdateien (.obj Dateien) oder in einer separaten PDB-Datei ( .pdb eine Datei) für die ausführbare Datei enthalten sein. Die Optionen für das Debuginformationsformat werden in den folgenden Abschnitten beschrieben.

Keine

Wenn keine Formatoption für Debuginformationen 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 daraus erstellten Bibliotheken können erheblich 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 dem Linker die Option übergeben /DEBUG wird.

Für Verteiler von Debugversionen von Bibliotheken von Drittanbietern hat es einen Vorteil, dass keine PDB-Datei verfügbar ist. Die Objektdateien für vorkompilierte Header sind jedoch während der Bibliotheksverknüpfungsphase und für das Debuggen erforderlich. Wenn nur Typinformationen (und kein Code) in .pch der Objektdatei enthalten sind, müssen Sie beim Erstellen der Bibliothek auch die Option (PCH-Referenz für Debugbibliothek injizieren) verwenden, die standardmäßig aktiviert ist./Yl

Die veraltete Option /Gm (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, wodurch sie viel kleiner werden.

Die Verwendung von /Zi wirkt sich nicht auf Optimierungen aus. /Zi impliziert jedoch /debug. Weitere Informationen finden Sie unter /DEBUG (Debuginformationen generieren).

Wenn Sie sowohl als auch /Zi angeben /clr, wird DebuggableAttribute das Attribut nicht in den Assemblymetadaten platziert. Wenn Sie möchten, müssen Sie sie im Quellcode angeben. Dieses Attribut kann Auswirkungen auf die Laufzeitleistung der Anwendung haben. Weitere Informationen dazu, wie sich das Debuggable Attribut auf die Leistung auswirken und wie Sie die Auswirkungen auf die Leistung ändern können, finden Sie unter Vereinfachen des Debuggens eines Bilds.

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 VC<x>.pdbmit dem Namen , <x> wobei eine Verkettung der Haupt- und Nebenversionsnummer der zu verwendenden Compilerversion ist. Der Compiler bettet den Namen der PDB und eine identifizierende Signatur mit Zeitstempel in jede Objektdatei ein, die mit dieser Option erstellt wurde. Dieser Name und diese Signatur verweisen den Debugger auf den Speicherort symbolischer Informationen und Zeilennummerinformationen. Der Name und die Signatur in der PDB-Datei müssen mit der ausführbaren Datei übereinstimmen, damit Symbole in den Debugger geladen werden können. Der WinDBG-Debugger kann nicht übereinstimmende Symbole mithilfe des Befehls .symopt+0x40 laden. Visual Studio hat keine ähnliche Option zum Laden von nicht übereinstimmenden Symbolen.

Wenn Sie eine Bibliothek aus Objekten /Zierstellen, die mit kompiliert wurden, muss die zugeordnete PDB-Datei verfügbar sein, wenn die Bibliothek mit einem Programm verknüpft ist. Das bedeutet, dass Sie beim Verteilen der Bibliothek auch die PDB-Datei verteilen müssen. Um eine Bibliothek zu erstellen, die Debuginformationen enthält, ohne PDB-Dateien zu verwenden, müssen Sie die Option /Z7 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 , /Zierzeugt jedoch eine PDB-Datei in einem Format, das die Funktion "Bearbeiten und Fortfahren" unterstützt. Um Debugfeatures bearbeiten und fortsetzen zu können, müssen Sie diese Option verwenden. Das Feature "Bearbeiten und Fortfahren" ist nützlich für die Produktivität von Entwicklern, kann jedoch Probleme bei der Codegröße, Leistung und Compilerkonformität verursachen. Da die meisten Optimierungen nicht mit "Bearbeiten und Fortfahren" kompatibel sind, /ZI deaktiviert die Verwendung von alle #pragma optimize Anweisungen im Code. Die Option ist auch __LINE__nicht mit der Verwendung des vordefinierten Makros kompatibel. /ZI__LINE__ Code/ZI, der mit kompiliert wurde, kann nicht als Nichttypvorlagenargument verwendet werden, __LINE__ kann jedoch in Makroerweiterungen verwendet werden.

Die /ZI Option erzwingt /Gy , dass sowohl die Optionen (Enable Function-Level Linking)/FC als auch (Full Path of Source Code File in Diagnostics) in Ihrer Kompilierung verwendet werden.

/ZIist nicht kompatibel mit /clr (Common Language Runtime-Kompilierung).

Hinweis

Die /ZI Option ist nur in den Compilern verfügbar, die x86- und x64-Prozessoren als Ziel verwenden. 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
MSVC-Befehlszeilensyntax des Compilers