Sdílet prostřednictvím


Trasování a instrumentace aplikací

Poznámka:

Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.

Provádění spuštěné aplikace můžete monitorovat trasováním. Při vývoji můžete do aplikace .NET Framework přidat instrumentaci trasování a ladění a tuto instrumentaci můžete použít při vývoji aplikace i po jejím nasazení. Pomocí třídy System.Diagnostics.Trace, System.Diagnostics.Debuga System.Diagnostics.TraceSource třídy můžete zaznamenávat informace o chybách a spouštění aplikací v protokolech, textových souborech nebo jiných zařízeních pro pozdější analýzu.

Pojem instrumentace označuje schopnost monitorovat nebo měřit úroveň výkonu produktu a diagnostikovat chyby. Při programování to znamená schopnost aplikace začlenit:

  • Trasování kódu – příjem informativních zpráv o spuštění aplikace za běhu

  • Ladění – Sledování a oprava chyb programování v aplikaci ve vývoji Další informace naleznete v tématu Ladění.

  • Čítače výkonu – Komponenty, které umožňují sledovat výkon aplikace. Další informace naleznete v tématu Čítače výkonu.

  • Protokoly událostí – Komponenty, které umožňují přijímat a sledovat hlavní události při provádění aplikace. Další informace najdete v předmětu EventLog .

Instrumentace aplikace umístěním příkazů trasování do strategických umístění v kódu je zvlášť užitečná pro distribuované aplikace. Pomocí příkazů trasování můžete aplikaci instrumentovat nejen k zobrazení informací, když se něco pokazí, ale také ke sledování toho, jak dobře aplikace funguje.

Třída TraceSource poskytuje vylepšené funkce trasování a lze je použít místo statických metod starší Trace třídy a Debug třídy trasování. Známé Trace a Debug třídy jsou stále široce používány, ale TraceSource třída se doporučuje pro nové příkazy trasování, například TraceEvent a TraceData.

Třídy Trace jsou Debug identické, s výjimkou toho, že procedury a funkce Trace třídy jsou ve výchozím nastavení kompilovány do sestavení vydané verze, ale třídy Debug nejsou.

Debug Třídy Trace poskytují prostředky pro monitorování a zkoumání výkonu aplikace během vývoje nebo po nasazení. Třídu můžete například použít Trace ke sledování konkrétních typů akcí v nasazené aplikaci, když k nim dojde (například vytvoření nových databázových připojení), a proto můžete monitorovat efektivitu aplikace.

Trasování a ladění kódu

Během vývoje můžete pomocí výstupních metod Debug třídy zobrazit zprávy v okně Výstup integrovaného vývojového prostředí (IDE) sady Visual Studio. Příklad:

Trace.WriteLine("Hello World!")
Debug.WriteLine("Hello World!")
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");

Každý z těchto příkladů zobrazí "Hello World!" v okně Výstup, když se aplikace spustí v ladicím programu.

To vám umožní ladit aplikace a optimalizovat jejich výkon na základě jejich chování v testovacím prostředí. Aplikaci můžete v sestavení ladění ladit pomocí zapnutého podmíněného atributu Debug , abyste dostali veškerý výstup ladění. Až bude vaše aplikace připravená k vydání, můžete sestavení vydané verze zkompilovat bez zapnutí podmíněného atributu Debug , aby kompilátor nezahrnul váš kód ladění do konečného spustitelného souboru. Další informace naleznete v tématu Postupy: Kompilace podmíněně pomocí trasování a ladění. Další informace o různých konfiguracích sestavení pro vaši aplikaci najdete v tématu Kompilace a sestavení.

Pomocí metod Trace třídy můžete také trasovat provádění kódu v nainstalované aplikaci. Umístěním přepínačů trasování do kódu můžete řídit, jestli se trasování vyskytuje a jak je rozsáhlé. Díky tomu můžete monitorovat stav aplikace v produkčním prostředí. To je zvlášť důležité v obchodní aplikaci, která používá více komponent spuštěných na více počítačích. Způsob použití přepínačů po nasazení můžete řídit prostřednictvím konfiguračního souboru. Další informace naleznete v tématu Postupy: Vytvoření, inicializace a konfigurace přepínačů trasování.

Při vývoji aplikace, pro kterou chcete použít trasování, obvykle do kódu aplikace zahrnete trasování i ladicí zprávy. Až budete připraveni nasadit aplikaci, můžete sestavení vydané verze zkompilovat bez zapnutí podmíněného atributu Ladění . Můžete však zapnout podmíněný atribut Trasování tak, aby kompilátor obsahoval váš trasovací kód ve spustitelném souboru. Další informace naleznete v tématu Postupy: Kompilace podmíněně pomocí trasování a ladění.

Fáze trasování kódu

Existují tři fáze trasování kódu:

  1. Instrumentace – do aplikace přidáte trasovací kód.

  2. Trasování – kód trasování zapisuje informace do zadaného cíle.

  3. Analýza – vyhodnocujete informace o trasování, abyste identifikovali a porozuměli problémům v aplikaci.

Během vývoje zapisují všechny metody výstupu ladění a trasování informace do okna Výstup v sadě Visual Studio ve výchozím nastavení. V nasazené aplikaci metody zapisují trasovací informace do zadaných cílů. Další informace o určení výstupního cíle pro trasování nebo ladění najdete v tématu Naslouchací procesy trasování.

Následuje celkový přehled hlavních kroků, které se obvykle týkají použití trasování k analýze a opravě potenciálních problémů v nasazených aplikacích. Další informace o provedení těchto kroků najdete na příslušném odkazu.

Použití trasování v aplikaci
  1. Po nasazení aplikace zvažte, který výstup trasování budete chtít přijímat na místě.

  2. Vytvořte sadu přepínačů. Další informace naleznete v tématu Postupy: Konfigurace přepínačů trasování.

  3. Přidejte příkazy trasování do kódu aplikace.

  4. Určete, kde se má výstup trasování zobrazit, a přidejte příslušné naslouchací procesy. Další informace naleznete v tématu Vytváření a inicializace naslouchacích procesů trasování.

  5. Otestujte a laďte aplikaci a kód trasování, který obsahuje.

  6. Zkompilujte aplikaci do spustitelného kódu pomocí jednoho z následujících postupů:

    • Použijte nabídku Sestavení spolu se stránkou Ladění v dialogovém okně Stránky vlastností v Průzkumník řešení. Tuto možnost použijte při kompilaci v sadě Visual Studio.

      - nebo -

    • Pro kompilační metodu příkazového řádku použijte direktivy kompilátoru Trace a Debug. Další informace naleznete v tématu Kompilace podmíněně pomocí trasování a ladění. Tuto možnost použijte při kompilaci z příkazového řádku.

  7. Pokud během běhu dojde k problému, zapněte příslušný přepínač trasování. Další informace naleznete v tématu Konfigurace přepínačů trasování.

    Kód trasování zapisuje trasovací zprávy do zadaného cíle, například do obrazovky, textového souboru nebo do protokolu událostí. Typ naslouchacího procesu, který jste zahrnuli do Trace.Listeners kolekce, určuje cíl.

  8. Analyzujte trasovací zprávy, abyste identifikovali a porozuměli problému v aplikaci.

Trasování instrumentace a distribuovaných aplikací

Když vytvoříte distribuovanou aplikaci, může být obtížné aplikaci otestovat způsobem, jakým se bude používat. Několik vývojových týmů má možnost otestovat všechny možné kombinace operačních systémů nebo webových prohlížečů (včetně všech lokalizovaných jazykových možností) nebo simulovat vysoký počet uživatelů, kteří budou mít k aplikaci přístup současně. Za těchto okolností nemůžete otestovat, jak distribuovaná aplikace bude reagovat na velké objemy, různá nastavení a jedinečné chování koncových uživatelů. Mnoho částí distribuované aplikace také nemá žádné uživatelské rozhraní, se kterým můžete pracovat přímo nebo zobrazit aktivitu těchto částí.

Můžete to však kompenzovat tím, že distribuovaným aplikacím umožníte popsat určité události zájmu správců systému, zejména věci, které se pokazí, instrumentací aplikace – tj. umístěním trasovacích příkazů do strategických umístění v kódu. Pokud se pak v době běhu vyskytne něco neočekávaného (například nadměrně pomalá doba odezvy), můžete určit pravděpodobnou příčinu.

Pomocí příkazů trasování se můžete vyhnout obtížné úloze zkoumání původního zdrojového kódu, jeho úpravě, rekompilování a pokusu o vytvoření chyby za běhu v prostředí ladění. Mějte na paměti, že aplikaci můžete instrumentovat nejen k zobrazení chyb, ale také ke sledování výkonu.

Strategické umístění příkazů trasování

Při umísťování příkazů trasování pro použití během běhu musíte věnovat zvláštní pozornost. Je nutné zvážit, jaké informace o trasování budou pravděpodobně potřeba v nasazené aplikaci, aby byly pokryty všechny pravděpodobné scénáře trasování. Vzhledem k tomu, že aplikace, které používají trasování, se značně liší, neexistují však žádné obecné pokyny pro strategické umístění trasování. Další informace o umísťování příkazů trasování naleznete v tématu Postupy: Přidání příkazů trasování do kódu aplikace.

Výstup z trasování

Výstup trasování shromažďuje objekty označované jako naslouchací procesy. Naslouchací proces je objekt, který přijímá výstup trasování a zapisuje ho do výstupního zařízení (obvykle okno, protokol nebo textový soubor). Když se vytvoří naslouchací proces trasování, obvykle se přidá do Trace.Listeners kolekce, což umožňuje naslouchacímu procesu přijímat veškerý výstup trasování.

Trasovací informace se vždy zapisuje alespoň do výchozího Trace výstupního cíle, tj DefaultTraceListener. Pokud jste z nějakého DefaultTraceListener důvodu odstranili bez přidání dalších naslouchacích procesů do Listeners kolekce, neobdržíte žádné trasovací zprávy. Další informace najdete v tématu Naslouchací procesy trasování.

Šest Debug členů a Trace metod, které zapisují informace o trasování, jsou uvedeny v následující tabulce.

metoda Výstup
Assert Zadaný text; nebo pokud není zadán žádný, zásobník volání. Výstup se zapíše pouze v případě, že podmínka zadaná jako argument v Assert příkazu je nepravda.
Fail Zadaný text; nebo pokud není zadán žádný, zásobník volání.
Write Zadaný text.
WriteIf Zadaný text, pokud podmínka zadaná jako argument v WriteIf příkazu je splněna.
WriteLine Zadaný text a návrat na začátek řádku.
WriteLineIf Zadaný text a návrat na začátek řádku, pokud je podmínka zadaná jako argument v WriteLineIf příkazu splněna.

Všichni naslouchací procesy v Listeners kolekci obdrží zprávy popsané v tabulce výše, ale provedené akce se mohou lišit v závislosti na tom, jaký druh naslouchacího procesu zprávu obdrží. Například zobrazí dialogové okno kontrolního výrazu, DefaultTraceListener když obdrží Fail oznámení nebo selhalo Assert , ale TextWriterTraceListener jednoduše zapíše výstup do jeho datového proudu.

Vlastní výsledky můžete vytvořit implementací vlastního naslouchacího procesu. Vlastní naslouchací proces trasování může například zobrazit zprávy do pole se zprávou nebo se připojit k databázi a přidat zprávy do tabulky. Všechny vlastní naslouchací procesy by měly podporovat šest výše uvedených metod. Další informace o vytváření naslouchacích procesů definovaných vývojářem najdete v referenčních informacích TraceListener k rozhraní .NET Framework.

Metody Write a WriteLine text, který zadáte, vždy zapisují. Assert, WriteIfa WriteLineIf vyžadují logický argument, který určuje, zda zapisují zadaný text, a zapisují zadaný text pouze v případě, že je výraz pravdivý (pro WriteIf a WriteLineIf) nebo nepravda (pro Assert). Metoda Fail vždy zapíše zadaný text. Další informace naleznete v tématu Postupy: Přidání trasovacích příkazů do kódu aplikace a reference rozhraní .NET Framework.

Aspekty zabezpečení

Pokud před nasazením aplikace ASP.NET nezakážete trasování a ladění, může aplikace odhalit informace o sobě, které by mohl zneužít škodlivý program. Další informace naleznete v tématu Postupy: Kompilace podmíněně pomocí trasování a ladění, kompilace a sestavování a postupy: Vytvoření, inicializace a konfigurace přepínačů trasování. Ladění je také možné konfigurovat prostřednictvím Internetová informační služba (IIS).

Viz také