Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Vouw in het dialoogvenster Debuggen (of Extra) >Opties de sectie Debuggen>Algemeen uit en schakel het selectievakje Inschakelen Native Edit en Continue in.
Eventuele incompatibele compiler- of linkerinstellingen veroorzaken een fout tijdens bewerken en doorgaan.
Voorbeeld: Edit and Continue : error : ‘file.cpp’ in ‘MyApp.exe’ was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option.
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/bigobjwordt 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*.propsbestand), 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 koppelen
Linkeropties waarmee Bewerken en Doorgaan wordt uitgeschakeld
Met de volgende linkeropties schakelt u Bewerken en Doorgaan uit:
Wanneer u /OPT:REF, /OPT:ICF of /INCREMENTAL:NO instelt, worden Bewerken en doorgaan uitgeschakeld met de volgende waarschuwing:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specificationAls /ORDER, /RELEASE of /FORCE instelt, wordt Bewerken en Doorgaan uitgeschakeld met de volgende waarschuwing:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationAls u een optie instelt die het maken van een programmadatabasebestand (.pdb) voorkomt, schakelt u Bewerken en Doorgaan zonder specifieke waarschuwing uit.
Beperkingen voor automatisch opnieuw koppelen
Bewerken en Doorgaan werkt uw programma bij aan het einde van een debugsessie om een bijgewerkt uitvoerbaar bestand te maken.
Edit and Continue kan uw programma niet relinken als u aan het debuggen bent vanaf een andere locatie dan de oorspronkelijke buildlocatie. In een melding wordt aangegeven dat u handmatig opnieuw moet opbouwen.
Met Bewerken en Doorgaan worden statische bibliotheken niet opnieuw opgebouwd. Als u wijzigingen aanbrengt in een statische bibliotheek met bewerken en doorgaan, moet u de bibliotheek handmatig opnieuw bouwen en apps opnieuw koppelen.
Bewerken en Doorgaan roept geen aangepaste buildstappen aan. Als uw programma gebruikmaakt van aangepaste buildstappen, kunt u het best handmatig opnieuw bouwen, zodat aangepaste buildstappen kunnen worden aangeroepen. In dat geval kunt u opnieuw koppelen uitschakelen na Bewerken en Doorgaan om ervoor te zorgen dat u het project handmatig opnieuw kunt bouwen.
Opnieuw koppelen uitschakelen na Bewerken en Doorgaan:
Kies Opties en instellingen in het menu Foutopsporing.
Selecteer in het dialoogvenster Opties onder het knooppunt Foutopsporing het knooppunt Bewerken en Doorgaan .
Schakel het selectievakje Codewijzigingen opnieuw koppelen uit na foutopsporing .
Beperkingen voor vooraf gecompileerde headers
Standaard laadt en verwerkt Edit and Continue vooraf gecompileerde headers op de achtergrond ten behoeve van het versnellen van codewijzigingen. Voor het laden van vooraf gecompileerde headers is toewijzing van fysiek geheugen vereist. Dit kan een probleem zijn als u op een computer met beperkt RAM-geheugen compileert. U kunt bepalen of dit een probleem kan zijn door Windows Taakbeheer te gebruiken om de hoeveelheid beschikbaar fysiek geheugen te bepalen terwijl u foutopsporing uitvoert. Als dit bedrag groter is dan de grootte van uw vooraf gecompileerde headers, zou Bewerken en Doorgaan geen probleem moeten hebben. Als de hoeveelheid kleiner is dan uw vooraf gecompileerde headers, kunt u voorkomen dat Bewerken en Doorgaan vooraf gecompileerde headers in de achtergrond laadt.
Achtergrond laden van vooraf gecompileerde headers uitschakelen voor Bewerken en Doorgaan:
Kies Opties en instellingen in het menu Foutopsporing.
Selecteer in het dialoogvenster Opties onder het knooppunt Foutopsporing het knooppunt Bewerken en Doorgaan .
Schakel het selectievakje Precompiling toestaan uit.
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:
Open een opdrachtprompt voor ontwikkelaars.
Voer de volgende opdracht uit:
VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1VsRegEdit.exe set “C:\Program Files (x86)\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.