Freigeben über


/dynamicdeopt (Dynamisches Debuggen von C++ aktivieren) (Vorschau)

Wichtig

Der /dynamicdeopt Compilerschalter befindet sich derzeit in der VORSCHAU. Diese Informationen beziehen sich auf ein Vorabversionsfeature, das vor der Veröffentlichung erheblich geändert werden kann. Microsoft übernimmt keine Gewährleistungen, ausgedrückt oder impliziert, in Bezug auf die hier bereitgestellten Informationen.

Aktivieren Sie dynamisches Debuggen (Vorschau) von C++, damit Sie optimierten Code debuggen können, als ob er kompiliert wurde und überall mit der Deoptimierung der On-Demand-Funktion schritt.

Syntax

/dynamicdeopt
/dynamicdeopt:suffix <suffix>
/dynamicdeopt:sync

Argumente

suffix
Geben Sie die Dateierweiterung für die optimierte Ausgabe an.

Ohne Optionen und test.cpp als Eingabe umfasst ihre Ausgabe test.obj, test.exeund test.pdbsowie test.alt.obj, test.alt.exeund test.alt.pdb. Mit diesem Schalter können Sie das Suffix der nicht optimierten binären Buildartefakte von .alt in etwas anderes ändern. Wenn Sie das Suffix ändern, müssen alle Dateien das neue Suffix verwenden, und es muss mit dem an den Linker übergebenen Namen /dynamicdeopt:suffix (Vorschau)übereinstimmen. Normalerweise verwenden Sie diesen Schalter nicht, es sei denn, Sie müssen Dateinamenkonflikte mit anderen Dateien vermeiden, die Sie haben.

sync
Erstellt die optimierte Ausgabe nach dem Erstellen der optimierten Ausgabe anstelle parallel. Standardmäßig spawnsiert der Compiler eine parallele Instanz des Codegenerators. Diese Option führt sie stattdessen zur seriellen Ausführung aus. Dieser Switch wird bereitgestellt, falls dies besser zu Ihrer Buildumgebung passt.

Bemerkungen

Dieses Vorschauflagge, das ab Visual Studio 2022, Version 17.14 Preview 2, verfügbar ist, gilt nur für x64-Projekte und muss mit dem entsprechenden Linker-Flag verwendet werden, /DYNAMICDEOPT.

Durch kompilieren mit /dynamicdeopt werden andere Binärdateien generiert, die für das Debuggen verwendet werden. Wenn Sie eine optimierte Funktion in einer optimierten Datei debuggen, wird stattdessen der Debugger in die alternative Binärdatei aufgenommen. Auf diese Weise können Sie debuggen, als ob Sie nicht optimierten Code debuggen und gleichzeitig die Leistungsvorteile von optimiertem Code erhalten.

/dynamicdeopt erfordert Folgendes:

/DEBUG oder /DEBUG:FULL. Wenn Sie /DEBUGnicht angeben oder /DEBUG:FASTLINKangeben, gibt der Linker einen schwerwiegenden Fehler aus. Wenn Sie /INCREMENTALangeben, generiert der Compiler eine Warnung und deaktiviert automatisch /INCREMENTAL. Wenn Sie /OPT:ICFangeben, generiert der Compiler eine Warnung, dass die Debugerfahrung nicht so gut ist. Dies liegt daran, dass ICF dazu führen kann, dass Funktionen aus der Alt-Datei entfernt werden, was bedeutet, dass Sie nicht in sie zugreifen können.

IncrediBuild 10.24 unterstützt C++-Builds für dynamisches Debuggen.
FastBuild v1.15 unterstützt C++-Builds für dynamisches Debuggen.

/dynamicdeopt ist nicht kompatibel mit "Edit-and-continue", und die folgenden Compileroptionen:

/GL
/ZI
/RTC1
/RTCs
/RTCc
/RTCu
/GH
/Gh
/fastcap
/callcap
/ZW
/fsanitize=address
/fsanitize=kernel-address
All of the CLR flags

Festlegen dieser Linkeroption in der Visual Studio-Entwicklungsumgebung

Sie können diesen Switch in Visual Studio festlegen. Weitere Informationen finden Sie unter dynamisches Debuggen (Vorschau)von C++. Es gibt Vorteile beim Festlegen des Switches in Visual Studio, da MSBuild automatisch einige der inkompatiblen Switches wie /GL und /OPT:ICFunterdrückt. Außerdem wird die entsprechende Linkeroption (/DYNAMICDEOPT) festgelegt. Sie können den Schalter auch in der Befehlszeile festlegen.

Programmgesteuertes Festlegen dieser Compileroption

Siehe auch

C++-dynamisches Debuggen (Vorschau)
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile