Ladění pomocí ladicího programu za běhu v sadě Visual Studio

Ladění za běhu může visual Studio spustit automaticky, když aplikace běží mimo chyby nebo chyby sady Visual Studio. S laděním za běhu můžete otestovat aplikace mimo Visual Studio a otevřít Visual Studio, abyste mohli začít ladit, když dojde k problému.

Ladění za běhu 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.

Tip

Pokud chcete jenom zastavit zobrazení dialogového okna Ladicí program za běhu, ale nemáte nainstalovanou sadu Visual Studio, přečtěte si téma Zakázání ladicího programu za běhu. Pokud jste nainstalovali Sadu Visual Studio, možná budete muset zakázat ladění za běhu z registru Systému Windows.

Povolení nebo zakázání ladění za běhu v sadě Visual Studio

Ladění za běhu můžete nakonfigurovat v dialogovém okně Možnosti sady Visual Studio Tools>(nebo Možnosti ladění).>

Poznámka:

Pokud chcete povolit nebo zakázat ladění za běhu, musíte spustit Visual Studio jako správce. Povolení nebo zakázání ladění za běhu nastaví klíč registru a oprávnění správce může být potřeba ke změně 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í za běhu:

  1. V nabídce Nástroje nebo Ladění vyberte Možnosti>ladění>za běhu.

    Enable or disable JIT debugging

    Poznámka:

    Pokud se možnost nabídky Za běhu nezobrazuje, ujistěte se, že je ladicí program Just-In-Time nainstalovaný pomocí Instalační program pro Visual Studio.

  2. V poli Povolit ladění za běhu pro tyto typy kódu vyberte typy kódu, které chcete ladit ladění za běhu: Spravované, nativní a/nebo skripty.

  3. Vyberte OK.

Pokud povolíte ladicí program Just-In-Time, ale neotevře se při chybovém ukončení nebo chybách aplikace, přečtěte si téma Řešení potíží s laděním za běhu.

Zakázání ladění za běhu z registru Systému Windows

Ladění za běhu může být stále povolené i v případě, že sada Visual Studio už není na vašem počítači nainstalovaná. Pokud už sada Visual Studio není nainstalovaná, můžete ladění za běhu zakázat úpravou registru systému Windows.

Pokud chcete zakázat ladění za běhu úpravou registru:

  1. V nabídce Start systému Windows spusťte Editor registru (regedit.exe).

  2. V okně Editor 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\systém Windows NT\CurrentVersion\AeDebug\Debugger

    JIT registry key

  3. Pokud existují, odstraňte také následující položky registru:

    • Hkey_local_machine\software\microsoft\. NETFramework\DbgManagedDebugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\systém Windows NT\CurrentVersion\AeDebug\Debugger

    Nezapomeňte odstranit ani změnit žádné jiné klíče registru.

  4. Zavřete okno Editoru registru.

Povolení ladění formuláře Windows Form za běhu

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 model Windows Forms vyvolá neošetřenou výjimku, zobrazí se následující dialogové okno:

Windows Form unhandled exception

Pokud chcete povolit ladění za běhu místo standardního zpracování chyb windows Form, přidejte tato nastavení:

  • V části souboru machine.config nebo <app name.exe.config> nastavte jitDebugging hodnotu natrue:system.windows.forms

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
  • V aplikaci C++ Windows Form je také nastavena DebuggableAttribute v truesouboru .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 do souboru AssemblyInfo.cpp aplikace přidat DebuggableAttribute následující řádek:

    [assembly:System::Diagnostics::DebuggableAttribute(true, true)];
    

    Další informace najdete na webu DebuggableAttribute.

Použití ladění za běhu

Tento příklad vás provede laděním za běhu, když aplikace vyvolá chybu.

V tomto příkladu vytvoříte konzolovou aplikaci jazyka C# v sadě Visual Studio, která vyvolá výjimku NullReferenceException.

  1. V sadě Visual Studio vytvořte konzolovou aplikaci jazyka C# (souborová>nová>konzolová aplikace Visual>C#>) s názvem ThrowsNullException. Další informace o vytváření projektů v sadě Visual Studio naleznete v tématu Návod: Vytvoření jednoduché aplikace.

  2. 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");
    }
    
  3. Pokud chcete sestavit řešení, zvolte buď konfiguraci Ladění (výchozí) nebo Vydané verze , a pak vyberte Sestavit>znovu sestavit řešení.

    Poznámka:

    Další informace o konfiguracích sestavení najdete v tématu Principy konfigurací sestavení.

  4. 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:

    Screenshot of the console for ThrowsNullException.exe, which throws an unhandled null reference exception (System.NullReferenceException).

  5. Otevře se dialogové okno Zvolit ladicí program za běhu.

    Screenshot of the Choose Just-In-Time Debugger dialog box, which appears after the exception appears in the ThrowsNullException.exe console window.

    V části Dostupné ladicí programy vyberte Možnost Nová instance <upřednostňované verze nebo edice> sady Visual Studio, pokud ještě není vybraná.

  6. 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:

    Screenshot of the ThrowsNullException project in Visual Studio, with highlighting of the line of source code that threw the exception.

V tuto chvíli můžete spustit ladění. Pokud ladíte skutečnou aplikaci, musíte zjistit, proč kód vyvolává výjimku.

Upozornění

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 je kód důvěryhodný, vyberte OK. V opačném případě vyberte Zrušit.

Řešení potíží s laděním za běhu

Pokud se ladění za běhu 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 za běhu.

    Opravou je přidání hodnotyDWORD auto s údaji hodnoty1 do následujících klíčů registru:

    • HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\systém Windows NT\CurrentVersion\AeDebug

    • (Pro 32bitové počítače) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\systém Windows NT\CurrentVersion\AeDebug

  • Zasílání zpráv o chybách systému Windows může převzít zpracování chyb v počítači.

    Tento problém vyřešíte tak, že pomocí Editoru registru přidáte hodnotuDWORD zakázáno s údaji hodnoty 1 do následujících klíčů registru:

    • HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Zasílání zpráv o chybách systému Windows

    • (Pro 32bitové počítače) HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Zasílání zpráv o chybách systému Windows

    Další informace naleznete v tématu . Nastavení WER.

Během ladění za běhu se můžou zobrazit následující chybové zprávy:

  • Nelze se připojit k procesu chybového ukončení. Zadaný program není program systému Windows nebo 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ě ladicího programu za běhu sady Visual Studio. Vyberte proces v seznamu Dostupné procesy a vyberte Připojit. Výběrem možnosti Ne zavřete dialogové okno ladicího programu za běhu.

  • Ladicí program nelze spustit, protože není přihlášen žádný uživatel.

    Ke konzole není přihlášený žádný uživatel, takže neexistuje žádná relace uživatele, která by zobrazila dialogové okno ladění za běhu.

    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 třídu MODELU COM, která není zaregistrovaná, pravděpodobně kvůli problému s instalací.

    Chcete-li tento problém vyřešit, použijte Instalační program pro Visual Studio k přeinstalaci nebo opravě instalace sady Visual Studio.