Ladění pomocí ladicího programu Just-In-Time v sadě Visual Studio
Just-In-Time ladění může visual Studio spustit automaticky, když aplikace běží mimo chyby sady Visual Studio nebo dojde k chybovému ukončení. 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 po instalaci sady Visual Studio museli zakázat ladění just-In-Time z registru Systému Windows.
Povolení nebo zakázání ladění Just-In-TimeIn-Time ve Visual Studio
Just-In-Time ladění můžete nakonfigurovat v dialogovém okně Nástroje Možnosti sady Visual Studio> (nebo Možnosti ladění >).
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 oprávnění správce možná budou nutná ke změně tohoto klíče. 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 nabídce Nástroje nebo Ladění vyberte Možnosti>Ladění>za běhu.
Poznámka
Pokud se možnost nabídky Just-In-Time nezobrazí, ujistěte se, že je pomocí instalačního programu sady Visual Studio nainstalovaný ladicí program 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\.NETFramework\DbgManagedDebugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
Pokud existují, odstraňte také následující položky registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
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
system.windows.forms
části machine.config nebo <souboru>.exe.config aplikace nastavte hodnotujitDebugging
natrue
:<configuration> <system.windows.forms jitDebugging="true" /> </configuration>
V aplikaci C++ Windows Form také nastavte
DebuggableAttribute
natrue
v 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 nastavitDebuggableAttribute
př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, žeIn-Time ladění je povolené v Nástroje>Možnosti>Ladění>Just-In-Time.
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 metodu Main() následujícím kódem, který vytiskne řádek do konzoly a pak vyvolá NullReferenceException:
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í.
Poznámka
- Zvolte konfiguraci ladění pro plnohodnotný zážitek z ladění.
- Pokud vyberete konfiguraci release, musíte vypnout just My Code, aby tento postup fungoval. V části Nástroje>Možnosti>Laděnízrušte zaškrtnutí Povolit pouze můj kód.
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).
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.
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
Pokud just-In-Time ladění se nespustí, když dojde k chybovému ukončení aplikace, i když je povolené 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 DWORDautomatickéhos daty hodnot1, do následujících klíčů registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
(Pro 32bitové aplikace na 64bitových počítačích) 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.
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.
Související obsah
- zabezpečení ladicího programu
- První pohled na ladicí program
- Možnosti, Ladění, Just-In-Time dialogové okno
- Upozornění zabezpečení: Připojení k procesu vlastněného nedůvěryhodným uživatelem může být nebezpečné. Pokud následující informace vypadají podezřele nebo si nejste jisti, nepřipojujte se k tomuto procesu.