Delen via


Ondersteunde codewijzigingen (C++)

Met bewerken en doorgaan voor C++-projecten worden de meeste typen codewijzigingen verwerkt. Sommige wijzigingen kunnen echter niet worden toegepast tijdens het uitvoeren van het programma. Als u deze wijzigingen wilt toepassen, moet u de uitvoering stoppen en een nieuwe versie van de code bouwen.

Zie Bewerken en Doorgaan (C++) voor informatie over het werken met Bewerken en Doorgaan voor C++ in Visual Studio.

Requirements

Bouwinstellingen (Projecteigenschappen >)

  • C/C++ > Algemene > foutopsporingsgegevensindeling: Programmadatabase voor bewerken en doorgaan (/ZI)

  • Linker > Algemeen > incrementeel koppelen inschakelen: Ja (/INCREMENTAL)

    Alle incompatibele linkerinstellingen (zoals /SAFESEH, of /OPT:...) kunnen de waarschuwing LNK4075 veroorzaken tijdens de build. Voorbeeld: LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification

Instellingen voor foutopsporingsprogramma (Opties voor foutopsporing > )

Open het Debug (of Tools) >Opties deelvenster, en vouw de Alle instellingen>Debugging>.NET/C++ Hot Reload sectie uit.

Open het Debug (of Extra) >Opties dialoogvenster en vouw de sectie Debugging>.NET/C++ Hot Reload uit.

Selecteer een of alle volgende opties om de functie in te schakelen:

  • Hot Reload inschakelen: hiermee schakelt u Hot Reload in wanneer u begint met het gekoppelde foutopsporingsprogramma (F5).

  • Hot Reload inschakelen bij het starten zonder foutopsporing: hiermee schakelt u Hot Reload in wanneer u start zonder het gekoppeldefoutopsporingsprogramma (Ctrl + F5).

  • Dynamisch opnieuw laden inschakelen bij bestand opslaan: hiermee schakelt u Dynamisch opnieuw laden in wanneer het bestand wordt opgeslagen.

  • Verbaal logniveau: Stel het niveau van logboekregistratie in wanneer Hot Reload is ingeschakeld. Kies uit Minimaal (standaard), Gedetailleerd of Diagnostisch.

Het wijzigen van deze instellingen is van invloed op alle projecten waaraan u werkt. U hoeft uw toepassing niet opnieuw te bouwen nadat u een instelling hebt gewijzigd. Als u uw toepassing bouwt vanuit de opdrachtregel of vanuit een makefile, maar u fouten opspoort in de Visual Studio-omgeving, kunt u nog steeds Bewerken en Doorgaan gebruiken als u de /ZI optie instelt.

Niet-ondersteunde wijzigingen

De volgende C/C++-wijzigingen kunnen niet worden toegepast tijdens een foutopsporingssessie. Als u een van deze wijzigingen aanbrengt en vervolgens codewijzigingen probeert toe te passen, wordt er een foutbericht of waarschuwingsbericht weergegeven in het venster Uitvoer .

  • De meeste wijzigingen in globale of statische gegevens.

  • Wijzigingen in uitvoerbare bestanden die worden gekopieerd van een andere computer en niet lokaal worden gebouwd.

  • Wijzigingen in een gegevenstype die van invloed zijn op de indeling van een object, zoals gegevensleden van een klasse.

  • Meer dan 64.000 bytes aan nieuwe code of gegevens toevoegen.

  • Variabelen toevoegen waarvoor een constructor op een punt vóór de instructiepointer is vereist.

  • Wijzigingen die van invloed zijn op code waarvoor runtime-initialisatie is vereist.

  • Uitzonderingshandlers toevoegen in sommige gevallen.

  • Wijzigingen in resourcebestanden.

  • Wijzigingen in code in alleen-lezen bestanden.

  • Wijzigingen in code zonder een bijbehorend PDB-bestand.

  • Wijzigingen in code die geen objectbestand heeft.

  • Lambdas wijzigen in de volgende scenario's:

    • Wanneer lambdas een statisch of globaal lid heeft.
    • Wanneer je lambdas doorgeeft aan een std::function. Deze methode veroorzaakt een legitieme ODR-schending en resulteert in C1092.
  • Bewerken en doorgaan werkt geen statische bibliotheken bij. Als u een wijziging aanbrengt in een statische bibliotheek, wordt de uitvoering voortgezet met de oude versie en wordt er geen waarschuwing gegeven.

Niet ondersteunde scenario's

Bewerken en doorgaan voor C/C++ is niet beschikbaar in de volgende foutopsporingsscenario's:

  • Debuggen van native apps die zijn gecompileerd met /Zo (Verbeterde foutopsporing voor geoptimaliseerde code)

  • Projecten die gebruikmaken van de MSVC v120-toolset en de C/C++ /bigobj -switch. Bewerken en doorgaan met /bigobj wordt alleen ondersteund in de MSVC v140- en latere buildhulpprogramma's.

  • Foutopsporing in de gemengde modus (systeemeigen/beheerd).

  • JavaScript-foutopsporing.

  • SQL-foutopsporing.

  • Een dumpbestand debuggen.

  • Code bewerken na een niet-verwerkte uitzondering, wanneer de optie oproepstack ontwinden bij niet-verwerkte uitzonderingen niet is geselecteerd.

  • Foutopsporing voor een app door gebruik te maken van Koppelen aan in plaats van de app te starten door Start te kiezen in het Foutopsporing menu.

  • Geoptimaliseerde code voor foutopsporing.

  • Foutopsporing van een oude versie van uw code nadat een nieuwe versie niet kon worden gebouwd vanwege buildfouten.

  • Een aangepast compilerpad (cl.exe) gebruiken. Om veiligheidsredenen gebruikt Visual Studio altijd de geïnstalleerde compiler voor hercompilatie van een bestand tijdens bewerken en doorgaan. Als u een aangepast compilerpad gebruikt (bijvoorbeeld via een aangepaste $(ExecutablePath) variabele in uw *.props bestand), wordt er een waarschuwing weergegeven en wordt Visual Studio teruggezet op het gebruik van de geïnstalleerde compiler van dezelfde versie/architectuur.

  • Verouderde architecturen/MSVC-toolsets. Met de MSVC v140-toolset ondersteunt het standaarddebugger Bewerken en Doorgaan met zowel X86- als X64-toepassingen. Verouderde hulpprogramma's ondersteunen alleen X86-toepassingen. Toolsets ouder dan MSVC v120 moeten de legacy debugger gebruiken door 'Foutopsporings > Opties > Algemeen > Gebruik van de systeemeigen compatibiliteitsmodus' te controleren om Bewerken en Doorgaan te gebruiken.

Beperkingen van IDL-attributen

Bewerken en Doorgaan genereert geen IDL-bestanden (Interface Definition Language). Daarom worden wijzigingen in IDL-attributen niet doorgevoerd tijdens het debuggen. Als u het resultaat van wijzigingen in IDL-kenmerken wilt zien, moet u de foutopsporing stoppen en de app opnieuw opbouwen. Bewerken en Doorgaan genereert geen fout of waarschuwing als IDL-kenmerken zijn gewijzigd. Zie IDL-kenmerken voor meer informatie.

Problemen diagnosticeren

Als uw scenario niet voldoet aan een van de bovenstaande voorwaarden, kunt u meer informatie verzamelen door de volgende DWORD-registerwaarde in te stellen:

  1. Open een opdrachtprompt voor ontwikkelaars.

  2. Voer de volgende opdracht uit:

    VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1

Als u deze waarde aan het begin van een foutopsporingssessie instelt, zullen de verschillende onderdelen van "Edit and Continue" gedetailleerde logboeken naar het uitvoervenster sturen, waarbij ze zichtbaar zijn in het deelvenster Debug.