Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bearbeiten und Fortfahren für C++-Projekte behandeln die meisten Arten von Codeänderungen. Einige Änderungen können jedoch während der Programmausführung nicht angewendet werden. Um diese Änderungen anzuwenden, müssen Sie die Ausführung beenden und eine neue Version des Codes erstellen.
Informationen zum Arbeiten mit "Bearbeiten" und "Weiter" in Visual Studio finden Sie unter "Bearbeiten und Fortsetzen" (C++ ).
Anforderungen
Einstellungen für den Build (Projekt > Eigenschaften)
C/C++ > Allgemeines > Debuginformationsformat: Programmdatenbank zum Bearbeiten und Fortsetzen (
/ZI)Linker > Allgemeine > Inkrementelle Verknüpfung aktivieren: Ja (
/INCREMENTAL)Alle inkompatiblen Linkereinstellungen, wie z. B.
/SAFESEH,/OPT:..., können beim Buildvorgang die Warnung LNK4075 verursachen. Beispiel:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Debuggereinstellungen (Debug-Optionen >)
Öffnen Sie den Bereich "Debug" (oder "Extras") >Optionen, und erweitern Sie den Abschnitt Alle Einstellungen>Debugging>.NET/C++ Hot Reload.
Öffnen Sie das Dialogfeld "Debugoptionen( oder Tools)>", und erweitern Sie den Abschnitt"Debugging.NET>/C++ Hot Reload".
Wählen Sie eine oder alle der folgenden Optionen aus, um das Feature zu aktivieren:
Hot Reload aktivieren: Aktiviert hot Reload beim Starten mit dem angefügten Debugger (F5).
Aktivieren Des Hot Reload beim Starten ohne Debugging: Aktiviert Hot Reload beim Starten ohne angefügten Debugger (STRG + F5).
'Hot Reload' beim Speichern von Dateien aktivieren: Aktiviert 'Hot Reload', wenn die Datei gespeichert wird.
Ausführliche Protokollierung: Legen Sie die Protokollierungsebene fest, wenn "Hot Reload" aktiviert ist. Wählen Sie aus "Minimal " (Standard), "Detailliert" oder "Diagnose" aus.
Das Ändern dieser Einstellungen wirkt sich auf alle Projekte aus, an der Sie arbeiten. Sie müssen Ihre Anwendung nach dem Ändern einer Einstellung nicht neu erstellen. Wenn Sie Ihre Anwendung über die Befehlszeile oder aus einer Makefile erstellen, aber in der Visual Studio-Umgebung debuggen, können Sie weiterhin "Bearbeiten" und "Weiter" verwenden, wenn Sie die /ZI Option festlegen.
Nicht unterstützte Änderungen
Die folgenden C/C++-Änderungen können während einer Debugsitzung nicht angewendet werden. Wenn Sie eine dieser Änderungen vornehmen und dann versuchen, Codeänderungen anzuwenden, wird im Ausgabefenster eine Fehlermeldung oder Warnmeldung angezeigt.
Die meisten Änderungen an globalen oder statischen Daten.
Änderungen an ausführbaren Dateien, die von einem anderen Computer kopiert und nicht lokal erstellt werden.
Änderungen an einem Datentyp, die sich auf das Layout eines Objekts auswirken, z. B. Datenmember einer Klasse.
Hinzufügen von mehr als 64k Bytes neuer Code oder Daten.
Hinzufügen von Variablen, die einen Konstruktor an einem Punkt vor dem Anweisungszeiger erfordern.
Änderungen, die sich auf Code auswirken, der die Laufzeitinitialisierung erfordert.
Hinzufügen von Ausnahmehandlern in einigen Fällen.
Änderungen an Ressourcendateien.
Änderungen an Code in schreibgeschützten Dateien.
Änderungen an Code ohne entsprechende PDB-Datei.
Änderungen an Code ohne Objektdatei.
Ändern von Lambdas in den folgenden Szenarien:
- Wenn Lambdas über ein statisches oder globales Element verfügen.
- Wenn Sie Lambdas an ein
std::functionübergeben. Diese Methode verursacht eine echte ODR-Verletzung und führt zu C1092.
"Bearbeiten" und "Weiter" aktualisiert keine statischen Bibliotheken. Wenn Sie eine Änderung in einer statischen Bibliothek vornehmen, wird die Ausführung mit der alten Version fortgesetzt, und es wird keine Warnung ausgegeben.
Nicht unterstützte Szenarien
Bearbeiten und Fortfahren für C/C++ ist in den folgenden Debugszenarien nicht verfügbar:
Debuggen nativer Apps, die mit /Zo kompiliert wurden (Optimieren des optimierten Debuggings)
Projekte, die das Toolset MSVC v120 und den C/C++
/bigobj-Switch verwenden. Bearbeiten und Fortsetzen mit/bigobjwird nur in den MSVC v140- und späteren Buildtools unterstützt.Debuggen im gemischten Modus (systemeigene/verwaltete)
JavaScript-Debugging.
SQL-Debugging.
Debuggen einer Speicherabbilddatei
Bearbeiten des Codes nach einer unbehandelten Ausnahme, wenn die Option Aufrufstapel bei unbehandelten Ausnahmen auflösen nicht ausgewählt ist.
Debuggen einer App durch Verwenden von "Anfügen an" anstelle des Startens der App über die Auswahl von "Start" im Menü "Debuggen".
Debugging von optimiertem Code.
Debuggen einer alten Version des Codes, nachdem eine neue Version aufgrund von Buildfehlern nicht erstellt werden konnte.
Verwenden eines benutzerdefinierten Compilerpfads (cl.exe). Aus Sicherheitsgründen verwendet Visual Studio für die erneute Kompilierung einer Datei während des Bearbeitens und Fortsetzens immer den installierten Compiler. Wenn Sie einen benutzerdefinierten Compilerpfad verwenden (z. B. durch eine benutzerdefinierte
$(ExecutablePath)Variable in Ihrer*.propsDatei), wird eine Warnung angezeigt, und Visual Studio greift auf die Verwendung des installierten Compilers derselben Version/Architektur zurück.Legacy-Architekturen/MSVC-Toolsets. Mit dem MSVC v140-Toolset unterstützt der Standarddebugger "Bearbeiten" und "Weiter" sowohl X86- als auch X64-Anwendungen. Legacy-Toolsets unterstützen nur X86-Anwendungen. Toolsets, die älter als MSVC v120 sind, sollten den Legacy-Debugger verwenden, indem Sie "Debug > Optionen > Allgemein > Nativen Kompatibilitätsmodus verwenden" überprüfen, um Edit and Continue zu nutzen.
Beschränkungen der IDL-Attribute
"Bearbeiten" und "Weiter" generiert keine IDL-Dateien (Interface Definition Language). Daher werden Änderungen an IDL-Attributen während des Debuggens nicht wiedergegeben. Um das Ergebnis von Änderungen an IDL-Attributen anzuzeigen, müssen Sie das Debuggen beenden und Ihre App neu erstellen. "Bearbeiten" und "Weiter" generieren keinen Fehler oder eine Warnung, wenn IDL-Attribute geändert wurden. Weitere Informationen finden Sie unter IDL-Attribute.
Diagnostizieren von Problemen
Wenn Ihr Szenario keiner der oben genannten Bedingungen entspricht, können Sie weitere Details erfassen, indem Sie den folgenden DWORD-Registrierungswert festlegen:
Öffnen Sie eine Entwickler-Eingabeaufforderung.
Führen Sie den folgenden Befehl aus:
VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1
Wenn Sie diesen Wert zu Beginn einer Debugsitzung festlegen, führen die verschiedenen Komponenten von "Edit and Continue" dazu, dass ausführliche Protokolle im , Abschnitt >, ausgegeben werden.