Sdílet prostřednictvím


Upravit a pokračovat (C++)

V projektech C++ můžete použít funkci Hot Reload, dříve nazývanou Upravit a pokračovat. Informace o omezeních funkce naleznete v tématu Podporované změny kódu (C++).

V projektech C++ můžete použít příkaz Upravit a pokračovat. Další informace o omezeních úprav a pokračování najdete v tématu Podporované změny kódu (C++).

Možnost kompilátoru /Zo (vylepšit optimalizované ladění) přidá do souborů .pdb (symbol) další informace o binárních souborech zkompilovaných bez možnosti /Od (Disable (Debug)).

Možnost /Zo zakáže úpravy a pokračování, jak je popsáno v tématu Postupy: Ladění optimalizovaného kódu.

Povolení nebo zakázání Hot Reload

Pokud provádíte změny v kódu, které nechcete, aby se použily během aktuální relace ladění, můžete zakázat automatické vyvolání funkce Hot Reload. Automatické Hot Reload můžete podle potřeby znovu povolit.

Důležité

Požadovaná nastavení sestavení a další informace o kompatibilitě funkcí najdete v tématu Úpravy a pokračování jazyka C++ v sadě Visual Studio 2015 Update 3.

  1. Pokud jste aktuálně v relaci ladění, zastavte ladění (Shift + F5).
  1. Otevřete panel Nástroje>Možnosti, a rozbalte část Všechna nastavení>Ladění>.NET/C++ Hot Reload.

  2. Pokud chcete povolit Hot Reload při spuštění s připojeným ladicím programem (F5), zaškrtněte políčko Povolit Hot Reload v pravém podokně.

    Po zaškrtnutí tohoto políčka můžete nakonfigurovat následující možnosti:

    Možnost Hot Reload Description Výchozí
    Automatické použití změn při pokračování (pouze nativní) Použije změny při pokračování s připojeným ladicím programem (F5). Enabled
    Upozornění na zastaralý kód Povolí upozornění, když ladicí program narazí na kód, který byl změněn, ale nelze jej okamžitě použít. Enabled
    Povolení při neladění Umožňuje Hot Reload při spuštění bez připojení ladicího programu (Ctrl+F5). Enabled
    Použít při ukládání souborů Použije změny při uložení souboru. Disabled
    Úroveň protokolování Nastavte úroveň protokolování, když je povolen Hot Reload. Vyberte si z možnosti Minimální, Podrobný nebo Diagnostický. Minimální
  1. Otevřete dialogové okno Nástroje>Možnosti, a rozbalte část Ladění>.NET/C++ obnovení za provozu.

  2. 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.

  3. Vyberte OK.

Povolení nebo zakázání možnosti Upravit a Pokračovat

Pokud provádíte úpravy kódu, který nechcete použít během aktuální relace ladění, můžete zakázat automatické vyvolání funkce Upravit a Pokračovat. Automatické úpravy a pokračování můžete podle potřeby znovu povolit.

Důležité

Požadovaná nastavení sestavení a další informace o kompatibilitě funkcí najdete v tématu Úpravy a pokračování jazyka C++ v sadě Visual Studio 2015 Update 3.

  1. Pokud jste aktuálně v relaci ladění, zastavte ladění (Shift + F5).

  2. Otevřete dialogové oknoNástroje>Možnosti a rozbalte část ladění>Obecné.

  3. Chcete-li povolit možnost Upravit a pokračovat, zaškrtněte políčko Povolit úpravy a pokračovat . Pokud chcete tuto možnost zakázat, zrušte zaškrtnutí políčka.

  4. Ve skupině Upravit a pokračovat zaškrtněte políčko Povolit nativní úpravy a pokračovat nebo jeho zaškrtnutí zrušte.

    Změna tohoto nastavení ovlivní všechny projekty, na které pracujete. Po změně tohoto 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.

Explicitní použití změn kódu

V jazyce C++ funkce Edit and Continue může aplikovat změny kódu dvěma způsoby. Změny kódu lze použít implicitně, když zvolíte spouštěcí příkaz nebo explicitně pomocí příkazu Použít změny kódu .

Když explicitně použijete změny kódu, zůstane program v režimu přerušení – nedojde k žádnému spuštění.

  • Pokud chcete změny kódu použít explicitně, v nabídce Ladění zvolte Použít změny kódu.

Jak zastavit změny kódu

Zatímco Funkce Upravit a Pokračovat probíhá v procesu použití změn kódu, můžete operaci zastavit.

Pokud chcete přestat používat změny kódu:

  • V nabídce Ladění zvolte Zastavit aplikování změn kódu.

    Tato položka nabídky je viditelná pouze v případě, že se použijí změny kódu.

    Pokud zvolíte tuto možnost, nebude potvrzena žádná změna kódu.

Resetování místa spuštění

Některé změny kódu můžou způsobit, že se bod provádění přesune do nového umístění, když změny použije funkce Upravit a Pokračovat. Funkce umístí bod provádění co nejpřesněji, ale výsledky nemusí být ve všech případech správné.

V jazyce C++ vás dialogové okno informuje o tom, kdy se změní bod provádění. Než budete pokračovat v ladění, měli byste ověřit, zda je umístění správné. Pokud není správný, použijte příkaz Nastavit další výraz. Další informace najdete v tématu Nastavení dalšího příkazu, který se má provést.

Práce se zastaralým kódem

V některých případech nemůže Edit and Continue okamžitě uplatnit změny kódu na spustitelný program, ale může být schopné je uplatnit později, pokud budete pokračovat v ladění. K tomuto scénáři dochází v případě, že upravíte funkci, která volá aktuální funkci, nebo pokud do zásobníku volání přidáte více než 64 bajtů nových proměnných.

V takových případech ladicí program pokračuje v provádění původního kódu, dokud se změny nedají použít. Zastaralý kód se zobrazí jako dočasné okno zdrojového souboru v samostatném zdrojovém okně s názvem, například enc25.tmp. Upravený zdroj se bude dál zobrazovat v původním okně zdroje. Pokud se pokusíte upravit zastaralý kód, zobrazí se zpráva s upozorněním.