/Yd (Debuginformationen in Objektdatei ablegen)
Aktualisiert: November 2007
Wenn diese Option zusammen mit der /Yc-Option und der /Z7-Option verwendet wird, werden die vollständigen Debuginformationen in sämtlichen Objektdateien analysiert, die aus der vorkompilierten Headerdatei (PCH-Datei) erstellt werden. Diese Option ist veraltet.
/Yd
Hinweise
/Yd ist in Visual C++ 2005 veraltet, verwenden Sie stattdessen /Zi. Von Visual C++ wird nun das Schreiben mehrerer Objekte in eine einzelne PDB-Datei unterstützt. Weitere Informationen finden Sie unter Veraltete Compileroptionen in Visual C++ 2005.
Solange es nicht erforderlich ist, eine Bibliothek zu verteilen, die Debuginformationen enthält, verwenden Sie die /Zi-Option anstelle von /Z7 und /Yd.
Das Speichern vollständiger Debuginformationen in jeder OBJ-Datei ist nur notwendig, um Bibliotheken mit Debuginformationen weiterzugeben. Es verlangsamt die Kompilierung und erfordert beträchtliche Speicherkapazitäten. Wenn /Yc und /Z7 ohne /Yd verwendet werden, speichert der Compiler allgemeine Debuginformationen in der ersten OBJ-Datei, die von der PCH-Datei erstellt wird. Der Compiler fügt diese Informationen nicht in die OBJ-Dateien ein, die anschließend von der PCH-Datei erstellt werden, sondern fügt Querverweise auf diese Informationen ein. Unabhängig von der Anzahl der OBJ-Dateien, die die PCH-Datei verwenden, enthält nur eine OBJ-Datei die allgemeinen Debuginformationen.
Obwohl dieses Standardverhalten kürzere Erstellungszeiten zur Folge hat und die Anforderungen an den Festplattenspeicher reduziert werden, ist es nicht wünschenswert, wenn eine kleine Änderung die Neuerstellung der OBJ-Datei mit den allgemeinen Debuginformationen erfordert. In diesem Fall muss der Compiler alle OBJ-Dateien neu erstellen, die Querverweise auf die ursprüngliche OBJ-Datei enthalten. Darüber hinaus ist es problematisch, auf die Querverweise einer einzigen OBJ-Datei zu vertrauen, wenn eine gemeinsame PCH-Datei von verschiedenen Projekten verwendet wird.
Weitere Informationen zu vorkompilierten Headern finden Sie unter:
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.
Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.
Beispiele
Angenommen, Sie arbeiten mit zwei Basisdateien, F.cpp und G.cpp, die jeweils die folgenden #include-Anweisungen enthalten:
#include "windows.h"
#include "etc.h"
Mit dem nachfolgenden Befehl werden die vorkompilierte Headerdatei ETC.pch und die Objektdatei F.obj erstellt:
CL /YcETC.H /Z7 F.CPP
Die Objektdatei F.obj schließt Typ- und Symbolinformationen für WINDOWS.h und ETC.h ein (sowie beliebige andere Headerdateien, die darin enthalten sind). Sie können nun den vorkompilierten Header ETC.pch verwenden, um die Quelldatei G.cpp zu kompilieren:
CL /YuETC.H /Z7 G.CPP
Die Objektdatei G.obj schließt die Debuginformationen für den vorkompilierten Header nicht ein, sondern verweist direkt auf diese Informationen in der Datei F.obj. Beachten Sie, dass Sie F.obj einbinden müssen.
Wenn der vorkompilierte Header nicht mit /Z7 kompiliert wurde, können Sie ihn dennoch bei späteren Kompilierungen zusammen mit /Z7 verwenden. Die Debuginformationen werden in der aktuellen Objektdatei gespeichert, jedoch stehen lokale Symbole für Funktionen und Typen, die im vorkompilierten Header definiert sind, dem Debugger nicht zur Verfügung.