Prozkoumání výjimky pomocí nástroje pro výjimky

Řešení výjimek je běžným problémem bez ohledu na vaši technologii nebo úroveň odborných znalostí. Může to být frustrující zkušenost, snažit se přijít na to, proč výjimky způsobují problémy ve vašem kódu. Když ladíte výjimku v Visual Studio, chceme tuto frustraci zmenšit tím, že vám poskytneme relevantní informace o výjimce, které vám pomůžou rychleji ladit váš problém.

pomocník pro výjimky

Pozastavit na výjimce

Když se ladicí program zastaví na výjimce, zobrazí se napravo od tohoto řádku kódu ikona chyby kvůli výjimce. U ikony výjimky se zobrazí pomocník pro nemodální výjimku.

pomocník pro výjimky umístěný vedle řádku kódu

Kontrola informací o výjimce

V Pomocníku pro výjimky můžete okamžitě přečíst typ výjimky a zprávu o výjimce a informace o tom, jestli byla výjimka vyvolána nebo nezachycená. Vlastnosti objektu Exception můžete zkontrolovat a zobrazit kliknutím na odkaz Zobrazit podrobnosti.

Analýza nulových referencí

Počínaje Visual Studio 2017 se v případě kódu .NET i C/C++ zobrazí při dosažení NullReferenceException nebo AccessViolation informace o analýze null v pomocné rutině výjimky. Analýza se zobrazí jako text pod zprávou o výjimce. Na obrázku níže je informace zobrazena jako "s byly null."

pomocná rutina analýzy null výjimky

Poznámka

Analýza odkazů null ve spravovaném kódu vyžaduje .NET verze 4.6.2. Analýza null se v současné době nepodporuje pro Univerzální platforma Windows (UPW) a žádné jiné aplikace .NET Core. Je k dispozici pouze při ladění kódu, který nemá žádné optimalizace kódu Just-In-Time (JIT).

Konfigurace nastavení výjimek

Ladicí program můžete nakonfigurovat tak, aby se přerušil, když je výjimka aktuálního typu, která je vyvolána z části Nastavení výjimek v Pomocníku pro výjimky. Pokud je ladicí program pozastavený na vyvolání výjimky, můžete pomocí zaškrtávacího políčka zakázat přerušení u daného typu výjimky, když je vyvolán v budoucnu. Pokud při vyvolání v tomto konkrétním modulu nechcete tuto konkrétní výjimku přerušit, zaškrtněte políčko podle názvu modulu v části S výjimkou případů, kdy je vyvolána: v okně nastavení výjimky .

Kontrola vnitřních výjimek

Pokud má výjimka jakékoli vnitřní výjimky (InnerException), můžete je zobrazit v pomocníkovi pro výjimky. Pokud existuje více výjimek, můžete mezi nimi přecházet pomocí šipek vlevo a doprava zobrazených nad zásobníkem volání.

pomocník pro práci s výjimkami s vnitřní výjimkou

Prozkoumat opět vyvolané výjimky

V případech, kdy došlo k výjimce thrown, nástroj pro práci s výjimkami zobrazí zásobník volání od chvíle, kdy byla výjimka poprvé vyvolána. Pokud byla výjimka vyvolána vícekrát, zobrazí se pouze zásobník volání z původní výjimky.

Pomocník pro výjimky s opětovným vyvoláním výjimek

Kontrola asynchronních výjimek (.NET)

Počínaje .NET 9 se ladicí program Visual Studio automaticky přeruší, když asynchronní metoda Task vyvolá výjimku v kódu rozhraní .NET. To usnadňuje ladění asynchronního kódu, zejména v ASP.NET, protože výjimky jsou často vyvolány napříč asynchronními hranicemi.

snímek obrazovky nástroje pro zpracování výjimek s asynchronní metodou

Zobrazení zásobníku volání

Počínaje verzí aplikace Visual Studio 2022 verze 17.3 můžete zobrazit rámce zásobníku výjimek v okně Zásobník volání. U asynchronních výjimek se tím přidá možnost rychle načíst symboly nebo vyhledat zdroje a přejít přímo na web výjimky. Rámce zásobníku výjimek v okně Zásobník volání poskytují standardní funkce zásobníku volání, jako je automatická navigace, rychlé přepínání mezi snímky, načtení symbolů a možnosti dekompilu pro návrat ke zdrojovému kódu, kde došlo k výjimce.

Pomocník pro výjimky se zásobníkem volání

Získání pomoci s AI

Pokud máte Copilot, můžete při ladění výjimek získat asistenci AI. Stačí vyhledat Analyzovat s Copilotem nebo Zeptejte se CopilotaScreenshot tlačítka Zeptejte se Copilota.. V těchto scénářích Copilot už zná kontext vašich otázek, takže nemusíte v chatu zadávat kontext sami. Další informace najdete v tématu Debug s Copilot.

Pokud Copilot chce získat přístup ke kontextu okna Výstupu, aby vám pomohl analyzovat problém, bude vás k tomu vyzývat v okně Chatu. Pokud udělíte oprávnění, povolíte Copilot provést další analýzu výjimky na základě podrobností modulu runtime. Pomocník pro výjimky, analýza proměnných, kontrola kódu a další scénáře ladění získávají přístup k tomuto kontextu v rámci právě probíhající ladicí relace.

Získání pomoci s AI s kontextem úložiště

Když pracujete v Visual Studio s úložištěm Azure DevOps, analýza výjimek s Copilot zahrnuje kontext úložiště pro chytřejší, rychlejší a přesnější řešení výjimek. Copilot zkontroluje křížové odkazy ve vašem otevřeném úložišti, včetně minulých chyb, problémů, žádostí o přijetí změn a historických oprav, aby vám poskytl přehledy, které jsou přímo relevantní pro vaši kódovou bázi.

Když dojde k výjimce:

  • Copilot identifikuje nejpravděpodobnější hlavní příčiny, ovlivněné komponenty a potenciální opravy.
  • Copilot využívá znalosti úložiště ke zvýraznění podobných minulých problémů a jejich řešení, což vám pomůže naučit se z existujících oprav.
  • Složité výjimky se analyzují s úplným kontextem a propojují chování modulu runtime k historickým vzorům, takže můžete rychle porozumět neočekávaným nebo nesprávným hodnotám.
  • Zviditelněním relevantních oprav a přehledů automaticky Copilot šetří čas a snižuje potřebu metody pokusu a omylu při řešení náročných problémů.

U složitých chyb, které vyžadují komplexní diagnostiku nad rámec jedné výjimky, můžete použít agenta ladicího programu. Agent ladicího programu poskytuje agentní workflow, který reprodukuje, instrumentuje a ověřuje opravy pomocí aktuálních dat z běžícího runtime. Další informace najdete v tématu Řešení chyb ladicího agenta.

Sdílejte ladicí relaci s Live Share

Z pomocníka výjimky můžete spustit relaci Live Share pomocí odkazu Spustit relaci Live Share.... Každý, kdo se připojí k relaci Live Share, uvidí pomocníka výjimky spolu s dalšími informacemi o ladění.