Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce Upravit a pokračovat pro projekty C++ zpracovává většinu typů změn kódu. Některé změny se ale nedají použít během provádění programu. Pokud chcete tyto změny použít, musíte zastavit provádění a sestavit novou verzi kódu.
Informace o práci s funkcí Upravit a pokračovat pro jazyk C++ v sadě Visual Studio najdete v tématu Upravit a pokračovat (C++ ).
Požadavky
Nastavení kompilace (Vlastnosti projektu > )
C/C++ > Obecný > formát informací o ladění: Programová databáze pro úpravy a pokračování (
/ZI)Linker > Obecné > povolení přírůstkového propojení: Ano (
/INCREMENTAL)Jakékoli nekompatibilní nastavení linkeru (například
/SAFESEH, nebo/OPT:...) může způsobit upozornění LNK4075 během sestavování. Příklad:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Nastavení ladicího programu (možnosti ladění > )
Otevřete podokno Debug (nebo Nástroje) >Možnosti, a rozbalte část Všechna nastavení>Debugging>.NET/C++ Za tepla.
Otevřete dialogové okno ladění (nebo nástroje) >Možnosti a rozbalte část ladění>.NET/C++ Rychlé načtení.
Pokud chcete tuto funkci povolit, vyberte jednu nebo všechny následující možnosti:
Povolit opětovné načítání za provozu: Povolí opětovné načítání za provozu při spuštění s připojeným ladicím programem (F5).
Povolit Hot Reload při spuštění bez ladění: Povolí Hot Reload při spuštění bez připojeného ladicího programu (Ctrl + F5).
Povolit Hot Reload při uložení souboru: Povolí Hot Reload při uložení souboru.
Úroveň podrobnosti protokolování: Nastavte úroveň podrobnosti protokolování, když je povolené Hot Reload. Zvolte možnost Minimální (výchozí), Podrobná nebo Diagnostická.
Změna těchto nastavení ovlivní všechny projekty, na které pracujete. Po změně nastavení nemusíte aplikaci znovu sestavit. Pokud aplikaci sestavíte z příkazového řádku nebo ze souboru pravidel, ale ladíte ji v prostředí sady Visual Studio, můžete i přesto použít příkaz Upravit a pokračovat, pokud nastavíte /ZI možnost.
V dialogovém okně ladění (nebo nástroje) >Možnosti rozbalte část ladění>Obecné a zaškrtněte políčko Povolit nativní úpravy a pokračovat.
Jakékoli nekompatibilní nastavení kompilátoru nebo linkeru způsobí chybu během úprav a pokračování.
Příklad: 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.
Nepodporované změny
Následující změny C/C++ nelze použít během relace ladění. Pokud provedete některou z těchto změn a pokusíte se použít změny kódu, zobrazí se v okně Výstup chybová zpráva nebo upozornění.
Většina změn globálních nebo statických dat
Změny spustitelných souborů, které se kopírují z jiného počítače a nejsou sestaveny místně.
Změny datového typu, které ovlivňují rozložení objektu, například datových členů třídy.
Přidání více než 64 tisíc bajtů nového kódu nebo dat
Přidání proměnných, které vyžadují konstruktor v bodě před ukazatelem instrukce.
Změny, které mají vliv na kód vyžadující inicializaci za běhu
Přidání obslužných rutin výjimek v některých případech
Změny souborů prostředků
Změny kódu v souborech jen pro čtení.
Změny kódu bez odpovídajícího souboru PDB.
Změny kódu, který neobsahuje žádný soubor objektu.
Úpravy lambda v následujících scénářích:
- Pokud mají lambda statického nebo globálního člena.
- Když předáte lambdy do
std::function. Tato metoda způsobuje skutečné porušení ODR a vede k C1092.
Funkce Upravit a pokračovat neaktualizuje statické knihovny. Pokud provedete změnu ve statické knihovně, provádění pokračuje ve staré verzi a nevystaví se žádné upozornění.
Nepodporované scénáře
Funkce Upravit a pokračovat pro C/C++ není dostupná v následujících scénářích ladění:
Ladění nativních aplikací zkompilovaných pomocí /Zo (vylepšení optimalizovaného ladění)
Projekty, které používají sadu nástrojů MSVC v120 a přepínač C/C++
/bigobj. Funkce Editovat a pokračovat/bigobjje podporována pouze v nástrojích pro sestavení MSVC v140 a novějších.Ladění ve smíšeném režimu (nativní nebo spravované)
Ladění JavaScriptu
Ladění SQL
Ladění souboru s výpisem paměti
Úpravy kódu po neošetřené výjimce, pokud není vybrána možnost Unwind the call stack on unhandled exceptions.
Ladění aplikace pomocí připojení namísto spuštění aplikace pomocí Spustit v nabídce Ladění.
Ladění optimalizovaného kódu
Ladění staré verze kódu poté, co se novou verzi nepodařilo sestavit kvůli chybám při sestavování.
Použití vlastní cesty kompilátoru (cl.exe) Z bezpečnostních důvodů Visual Studio při funkci Edit and Continue vždy při překompilaci souboru používá nainstalovaný kompilátor. Pokud používáte vlastní cestu kompilátoru (například prostřednictvím vlastní
$(ExecutablePath)proměnné v*.propssouboru), zobrazí se upozornění a Sada Visual Studio se vrátí k použití nainstalovaného kompilátoru stejné verze nebo architektury.Starší architektury / sady nástrojů MSVC ** S nástrojem MSVC v140 výchozí ladicí program podporuje funkci Edit and Continue pro aplikace X86 i X64. Starší sady nástrojů podporují pouze aplikace X86. Sady nástrojů starší než MSVC v120 by měly používat starší ladicí program tak, že zaškrtnete "Možnosti > ladění > Obecné > Použít nativní režim kompatibility", aby bylo možné použít Upravit a pokračovat.
Omezení propojení
Možnosti linkeru, které zakazují úpravy a pokračování
Následující možnosti linkeru zakazují úpravy a pokračování:
Nastavení /OPT:REF, /OPT:ICF nebo /INCREMENTAL:NO zakáže Edit and Continue se zobrazením následujícího upozornění:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specificationNastavení /ORDER, /RELEASE nebo /FORCE zakáže funkci Upravit a pokračovat s následujícím upozorněním:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationNastavení jakékoli možnosti, která brání vytvoření souboru databáze programu (.PDB), zakáže funkci Edit and Continue bez konkrétního upozornění.
Omezení automatického opětovného propojení
Ve výchozím nastavení Edit and Continue přelinkuje váš program na konci ladicího sezení, aby vytvořil aktuální spustitelný soubor.
"Edit and Continue" nemůže znovu propojit váš program, pokud ho ladíte z jiného umístění než z původního umístění sestavení. Zpráva vám řekne, že je potřeba znovu sestavit ručně.
Funkce Upravit a pokračovat nepřestavuje statické knihovny. Pokud provedete změny statické knihovny pomocí funkce Upravit a pokračovat, budete muset knihovnu znovu sestavit ručně a znovu propojit aplikace pomocí ní.
Funkce Upravit a pokračovat nevyvolává vlastní kroky sestavení. Pokud váš program používá vlastní kroky sestavení, možná budete chtít znovu sestavit ručně, aby bylo možné vyvolat vlastní kroky sestavení. V takovém případě můžete zakázat opětovné propojení po "Edit and Continue", abyste měli jistotu, že budete vyzváni k ručnímu přestavení.
Zakázání opětovného propojení po úpravě a pokračování:
V nabídce Ladění zvolte Možnosti a nastavení.
V dialogovém okně Možnosti přejděte na uzel Ladění a potom vyberte uzel Upravit a pokračovat.
Zrušte zaškrtnutí políčka Změny kódu odkazu po ladění.
Omezení předkompilovaných hlaviček
Ve výchozím nastavení funkce Upravit a pokračovat načítá a zpracovává předkompilované hlavičky na pozadí, aby se urychlilo zpracování změn kódu. Načtení předkompilovaných hlaviček vyžaduje přidělení fyzické paměti, což může být problém, pokud kompilujete na počítači s omezenou pamětí RAM. To můžete zjistit pomocí Správce úloh systému Windows k určení množství dostupné fyzické paměti při ladění. Pokud je tato částka větší než velikost předkompilovaných hlaviček, neměl by být problém upravit a pokračovat. Pokud je částka menší než velikost vašich předkompilovaných hlaviček, můžete zabránit načtení předkompilovaných hlaviček na pozadí pomocí funkce Edit and Continue.
Zakázání načítání předkompilovaných hlaviček na pozadí pro funkci Upravit a pokračovat:
V nabídce Ladění zvolte Možnosti a nastavení.
V dialogovém okně Možnosti přejděte na uzel Ladění a potom vyberte uzel Upravit a pokračovat.
Zrušte zaškrtnutí políčka Povolit předkompilování .
Omezení atributů IDL
Funkce Upravit a pokračovat nevygeneruje soubory jazyka IDL (Interface Definition Language). Změny atributů IDL se proto při ladění neprojeví. Pokud chcete zobrazit výsledek změn atributů IDL, musíte zastavit ladění a znovu sestavit aplikaci. Funkce Upravit a pokračovat negeneruje chybu nebo upozornění, pokud se změnily atributy IDL. Další informace naleznete v tématu Atributy IDL.
Diagnostika problémů
Pokud váš scénář nevyhovuje žádné z výše uvedených podmínek, můžete získat další podrobnosti nastavením následující hodnoty registru DWORD:
Otevřete příkazový řádek pro vývojáře.
Spusťte následující příkaz:
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
Nastavení této hodnoty na začátku ladicí relace způsobí, že různé komponenty Edit and Continue začnou zobrazovat podrobné protokoly v podokně Ladění okna >.