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.
Just-In-Time ladění může automaticky spustit Visual Studio, když aplikace běžící mimo Visual Studio způsobí chybu nebo spadne. Pomocí just-In-Time ladění můžete otestovat aplikace mimo Visual Studio a otevřít Visual Studio, abyste mohli začít ladit, když dojde k problému.
Just-In-Time ladění funguje pro desktopové aplikace pro Windows. Nefunguje pro univerzální aplikace pro Windows ani pro spravovaný kód hostovaný v nativní aplikaci, jako jsou vizualizéry.
Spropitné
Pokud chcete jenom zastavit zobrazení dialogového okna Just-In-Time Debugger, ale nemáte nainstalovanou sadu Visual Studio, podívejte se na Jak zakázat Just-In-Time ladicí program. Pokud jste měli nainstalované Visual Studio, možná budete muset zakázat ladění Just-In-Time v registru Windows.
Povolení nebo zakázání ladění Just-In-TimeIn-Time ve Visual Studio
Při práci s ladicím programem Just-In-Time v sadě Visual Studio jsou možnosti konfigurace pro ladicí program přístupné z nabídek Možnosti nástrojů> neboMožnostiladění>. Ladicí program Just-In-Time je k dispozici v částiLadění a testování> instalačního programu.
Poznámka
Pokud chcete povolit nebo zakázat ladění Just-In-Time, musíte spustit Visual Studio jako správce. Povolení nebo zakázání ladění Just-In-Time nastaví klíč registru a ke změně klíče mohou být vyžadována oprávnění správce. Pokud chcete visual Studio otevřít jako správce, klikněte pravým tlačítkem na aplikaci Visual Studio a zvolte Spustit jako správce.
Povolení nebo zakázání ladění just-In-Time:
V podokně Nástroje>Možnosti rozbalte část Všechna nastavení>Ladění>Obecné.
V pravém podokně vyberte odkaz Konfigurovat Just-In-Time ladění.
V dialogovém okně Možnosti ladicího programu sady Visual Studio nakonfigurujte možnost Povolit ladění Just-In-Time pro tyto typy kódu. Vyberte typy kódu, které chcete ladit pomocí Just-In-Time ladění: Managed (.NET Framework) nebo Native.
Vyberte OK.
V dialogovém okně Nástroje>Možnosti rozbalte část Ladění>Just-In-Time.
V poli Povolit just-in-timeIn-Time ladění pro tyto typy kódu vyberte typy kódu, které chcete ladit pomocí just-in-timeIn-Time ladění: spravované, nativnía/nebo skript.
Vyberte OK.
Pokud povolíte ladicí program Just-In-Time, ale při selhání nebo chybách aplikace se neotevře, viz Řešení problémů sIn-Time laděním.
Zakažte just-In-Time ladění z registru Windows
Just-In-Time ladění může být stále povoleno, i když Visual Studio už není nainstalované na vašem počítači. Pokud už sada Visual Studio není nainstalovaná, můžete zakázat ladění just-In-Time úpravou registru Systému Windows.
Zakázat ladění just-In-Time úpravou registru:
V nabídce Start Systému Windows spusťte editoru registru (regedit.exe).
V okně editoru registru vyhledejte a odstraňte následující položky registru, pokud existují:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
Pokud existují, odstraňte také následující položky registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
Nezapomeňte odstranit ani změnit žádné jiné klíče registru.
Zavřete okno editoru registru .
Povolení just-In-Time ladění formuláře Windows
Ve výchozím nastavení mají aplikace Windows Form obslužnou rutinu výjimek nejvyšší úrovně, která umožňuje aplikaci běžet, pokud se dá obnovit. Pokud aplikace Windows Forms vyvolá neošetřenou výjimku, zobrazí se následující dialogové okno:
Pokud chcete povolit ladění just-In-Time místo standardního zpracování chyb formuláře Windows Form, přidejte tato nastavení:
V části
system.windows.formssouboru machine.config nebo bin<název aplikace>.exe.config nastavtejitDebugginghodnotu natrue.<configuration> <system.windows.forms jitDebugging="true" /> </configuration>V aplikaci C++ Windows Form také nastavte
DebuggableAttributenatruev souboru .config nebo v kódu. Pokud kompilujete pomocí /Zi a bez /Og, kompilátor nastaví tento atribut za vás. Pokud ale chcete ladit neoptimalizované sestavení vydané verze, musíte nastavitDebuggableAttributepřidáním následujícího řádku do souboru AssemblyInfo.cpp vaší aplikace:[assembly:System::Diagnostics::DebuggableAttribute(true, true)];Další informace najdete v tématu DebuggableAttribute.
Použití ladění just-In-Time
Tento příklad vás provede laděním Just-In-Time, pokud aplikace vyvolá chybu.
Abyste mohli postupovat podle těchto kroků, musíte mít nainstalovanou sadu Visual Studio. Pokud nemáte Visual Studio, můžete si stáhnout bezplatnou Visual Studio Community Edition.
Ujistěte se, že je povoleno ladění Just-In-Time nakonfigurováním možnosti Povolit ladění Just-In-Time pro tyto typy kódu v části Nástroje>Možnosti.
V tomto příkladu vytvoříte konzolovou aplikaci jazyka C# v sadě Visual Studio, která vyvolá NullReferenceException.
V sadě Visual Studio vytvořte konzolovou aplikaci jazyka C# (File>New>Project>Visual C#>Console Application) s názvem ThrowsNullException. Další informace o vytváření projektů v sadě Visual Studio naleznete v tématu Návod: Vytvoření jednoduché aplikace.
Po otevření projektu v sadě Visual Studio otevřete soubor Program.cs. Nahraďte veškerý výchozí kód, včetně metody Main(), pokud je k dispozici, následujícím kódem. Následující kód vytiskne řádek do konzoly a pak vyvolá výjimku NullReferenceException:
Console.WriteLine("we will now throw a NullReferenceException");
throw new NullReferenceException("this is the exception thrown by the console app");
static void Main(string[] args)
{
Console.WriteLine("we will now throw a NullReferenceException");
throw new NullReferenceException("this is the exception thrown by the console app");
}
Řešení sestavíte tak, že zvolíte buď konfiguraci Debug (výchozí), nebo Release, a pak vyberete Sestavit>Znovu sestavit řešení.
Pro úplný zážitek z ladění vyberte konfiguraci Debug.
Pokud vyberete konfiguraci Release, musíte vypnout Just My Code, aby tento postup fungoval.
V podokněNástroje>Možnosti rozbalte částVšechna nastavení>Ladění>Obecné a zrušte zaškrtnutí políčka Povolit pouze můj kód.
V dialogovém okně Nástroje>Možnosti rozbalte část Ladění>Obecné a zrušte zaškrtnutí políčka Povolit pouze můj kód.
Když zrušíte výběr této možnosti, možnost Upozornit, pokud při spuštění ladění není přítomen žádný uživatelský kód (pouze spravovaný) se automaticky zakáže.
Další informace o konfiguracích sestavení najdete v tématu Principy konfigurací sestavení.
Otevřete sestavenou aplikaci ThrowsNullException.exe ve složce projektu C# (...\ThrowsNullException\ThrowsNullException\bin\Debug nebo ...\ThrowsNullException\ThrowsNullException\bin\Release) nebo spusťte spustitelný soubor z příkazového řádku.
Mělo by se zobrazit následující příkazové okno:
Otevře se dialogové okno Vybrat pouze-In-Time Debugger.
V části Dostupné ladicí programyvyberte Nová instance <vaší preferované verze nebo edice Visual Studio>, pokud ještě není vybrána.
Poznámka
Pokud nevidíte dialogové okno ladicího programu Just-in-Time, možná budete muset přidat klíče registru. Viz Just-In-Time ladění se nedaří spustit
Vyberte OK.
Projekt ThrowsNullException se otevře v nové instanci sady Visual Studio s zastaveným spuštěním na řádku, který vyvolal výjimku:
Můžete začít ladit v tuto chvíli. Pokud ladíte skutečnou aplikaci, musíte zjistit, proč kód vyvolává výjimku.
Opatrnost
Pokud vaše aplikace obsahuje nedůvěryhodný kód, zobrazí se dialogové okno upozornění zabezpečení, které vám umožní rozhodnout se, jestli chcete pokračovat v ladění. Než budete pokračovat v ladění, rozhodněte se, jestli kódu důvěřujete. Napsali jste kód sami? Pokud aplikace běží na vzdáleném počítači, rozpoznáte název procesu? Pokud je aplikace spuštěná místně, zvažte možnost spuštění škodlivého kódu na vašem počítači. Pokud se rozhodnete, že kód je důvěryhodný, vyberte OK. V opačném případě vyberte Zrušit.
Řešení potíží s laděním Just-In-Time
Ladění Just-In-Time se nedaří spustit
Pokud se funkce Just-In-Time ladění nespustí při chybovém ukončení aplikace, i když je povolena v sadě Visual Studio:
Známý problém s Windows může způsobovat selhání ladicího programu Just-In-Time.
Opravou je přidání hodnoty DWORD s hodnotou dat1 pro Auto do následujících klíčů registru:
(.NET) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
(.NET Framework) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
Zasílání zpráv o chybách systému Windows může převzít zpracování chyb ve vašem počítači.
Pokud chcete tento problém vyřešit, použijte Editor registru k přidání DWORD hodnoty pro Disabled, s datovou hodnotou 1, do následujících klíčů registru:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting
(Pro 32bitové aplikace na 64bitových počítačích) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting
Další informace najdete v tématu nastavení WER.
Chybové zprávy
Během ladění Just-In-Time se můžou zobrazit následující chybové zprávy.
Nelze se připojit k crashujícímu procesu. Zadaný program není program Windows ani program MS-DOS.
Ladicí program se pokusil připojit k procesu spuštěném pod jiným uživatelem.
Chcete-li tento problém vyřešit, otevřete v sadě Visual Studio Ladění>Připojit k procesu (nebo stiskněte Ctrl + Alt + P) a vyhledejte proces, který chcete ladit, v seznamu Dostupné procesy. Pokud neznáte název procesu, vyhledejte ID procesu v dialogovém okně Visual Studio Just-In-Time Debug ger. Vyberte postup v seznamu Dostupné procesy, potom zvolte Připojit. Výběrem možnosti Ne zavřete dialogové okno ladicího programu Just-In-Time.
Ladicí program nelze spustit, protože nebyl přihlášen žádný uživatel.
Ke konzoli není přihlášený žádný uživatel, takže neexistuje žádná uživatelská relace pro zobrazení dialogového okna ladění Just-In-Time.
Pokud chcete tento problém vyřešit, přihlaste se k počítači.
třída není zaregistrovaná.
Ladicí program se pokusil vytvořit COM třídu, která není zaregistrovaná, pravděpodobně kvůli problému s instalací.
Chcete-li tento problém vyřešit, pomocí instalačního programu sady Visual Studio přeinstalujte nebo opravte instalaci sady Visual Studio.
Další ladicí program se zaregistroval jako ladicí program Just-In-Time. Pokud chcete provést opravu, povolte ladění Just-In-Time nebo spusťte opravu sady Visual Studio.
Tato zpráva se zobrazí, pokud máte jiný ladicí program, případně starší verzi ladicího programu sady Visual Studio, nastavený jako ladicí program Just-In-Time.
Zjištěny chyby registrace ladění Just-In-Time. Pokud chcete provést opravu, povolte ladění Just-In-Time nebo spusťte opravu sady Visual Studio.
Pokud se zobrazí jedno z těchto upozornění, Just-In-Time ladění pomocí sady Visual Studio vyžaduje oprávnění správce, dokud problém nevyřešíte. Pokud se pokusíte funkci povolit jako nesprávce za těchto podmínek, zobrazí se následující chybová zpráva:
Přístup byl odepřen. Požádejte správce, aby povolil Just-In-Time ladění, nebo opravte instalaci sady Visual Studio.