Megosztás a következőn keresztül:


Nyomkövetési és rendszerezési alkalmazások

Megjegyzés:

Ez a cikk a .NET-keretrendszerre vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.

A nyomkövetéssel figyelheti az alkalmazás futás közbeni végrehajtását. A fejlesztés során nyomkövetési és hibakeresési rendszerállapotokat adhat hozzá a .NET-keretrendszer alkalmazásához, és ezt a rendszerállapotot az alkalmazás fejlesztésekor és az üzembe helyezés után is használhatja. A , System.Diagnostics.Traceés az System.Diagnostics.Debugosztályok segítségével naplókban, szövegfájlokban vagy System.Diagnostics.TraceSource más eszközökben rögzítheti a hibákra és az alkalmazások végrehajtására vonatkozó információkat későbbi elemzés céljából.

A rendszerállapot kifejezés a termék teljesítményének monitorozására vagy mérésére, valamint a hibák diagnosztizálására való képességre utal. A programozás során ez azt jelenti, hogy az alkalmazás képes a következő elemeket beépíteni:

  • Kódkövetés – Informatív üzenetek fogadása egy alkalmazás futásidőben történő végrehajtásáról.

  • Hibakeresés – A fejlesztés alatt álló alkalmazások programozási hibáinak nyomon követése és javítása. További információ: Hibakeresés.

  • Teljesítményszámlálók – Olyan összetevők, amelyek lehetővé teszik az alkalmazás teljesítményének nyomon követését. További információ: Teljesítményszámlálók.

  • Eseménynaplók – Olyan összetevők, amelyek lehetővé teszik az alkalmazás végrehajtása során bekövetkező főbb események fogadását és nyomon követését. További információ: EventLog osztály.

Az alkalmazás rendszerezése nyomkövetési utasítások stratégiai helyeken való elhelyezésével a kódban különösen hasznos elosztott alkalmazások esetében. Nyomkövetési utasítások használatával az alkalmazást nem csak akkor lehet információk megjelenítésére beállítani, amikor valami elromlik, hanem annak teljesítményének figyelésére is szolgálhat.

Az TraceSource osztály továbbfejlesztett nyomkövetési funkciókat biztosít, és a régebbi Trace és Debug nyomkövetési osztályok statikus módszerei helyett használható. Az ismerős Trace és Debug osztályokat továbbra is széles körben alkalmazzák, azonban az TraceSource osztály ajánlott az új nyomkövetési parancsokhoz, mint például TraceEvent és TraceData.

Az Trace és Debug az osztályok azonosak, kivéve, hogy az Trace osztály eljárásai és funkciói alapértelmezés szerint kiadási buildekké vannak fordítva, de az Debug osztályéi nem.

Az Trace és Debug az osztályok lehetővé teszik az alkalmazások teljesítményének monitorozását és vizsgálatát a fejlesztés során vagy az üzembe helyezés után. Az osztály használatával például nyomon követheti az Trace üzembe helyezett alkalmazások bizonyos típusú műveleteit (például új adatbázis-kapcsolatok létrehozását), és így monitorozhatja az alkalmazás hatékonyságát.

Kódkövetés és hibakeresés

A fejlesztés során az osztály kimeneti módszereivel megjelenítheti az Debug üzeneteket a Visual Studio integrált fejlesztési környezetének (IDE) Kimeneti ablakában. Például:

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

Az alábbi példák mindegyike a "Hello World!" szöveget jeleníti meg a Kimeneti ablakban, amikor az alkalmazás fut a hibakeresőben.

Ez lehetővé teszi az alkalmazások hibakeresését és teljesítményük optimalizálását a tesztkörnyezetben való viselkedésük alapján. Az alkalmazás hibakeresését a hibakeresési buildben a feltételes attribútum bekapcsolt állapotában Debug végezheti el, így az összes hibakeresési kimenetet megkapja. Ha az alkalmazás készen áll a kiadásra, a feltételes attribútum bekapcsolása nélkül lefordíthatja a Debug kiadási buildet, így a fordító nem fogja tartalmazni a hibakeresési kódot a végleges végrehajtható fájlban. További információkért lásd: Útmutató: Feltételes fordítás nyomkövetéssel és hibakereséssel. Az alkalmazás különböző buildkonfigurációiról további információt a Fordítás és az Összeállítás című témakörben talál.

A kódvégrehajtást egy telepített alkalmazásban is nyomon követheti az Trace osztály metódusaival. A nyomkövetési kapcsolók kódba helyezésével szabályozhatja, hogy a nyomkövetés végbejön-e, és hogy mennyire terjed ki. Így éles környezetben figyelheti az alkalmazás állapotát. Ez különösen fontos egy olyan üzleti alkalmazásban, amely több, több számítógépen futó összetevőt használ. A konfigurációs fájlon keresztül szabályozhatja a kapcsolók használatát az üzembe helyezés után. További információkért lásd: Nyomkövetési kapcsolók létrehozása, inicializálása és konfigurálása.

Ha olyan alkalmazást fejleszt, amelyhez nyomkövetést kíván használni, általában az üzenetek nyomon követését és hibakeresését is belefoglalja az alkalmazáskódba. Ha készen áll az alkalmazás üzembe helyezésére, a debug feltételes attribútum bekapcsolása nélkül lefordíthatja a kiadási buildet. Azonban bekapcsolhatja a Trace feltételes attribútumot, hogy a fordító tartalmazza a nyomkövetési kódot a végrehajtható fájlban. További információkért lásd: Útmutató: Feltételes fordítás nyomkövetéssel és hibakereséssel.

A kódkövetés fázisai

A kódkövetés három fázisból áll:

  1. Instrumentálás — nyomkövetési kódot ad az alkalmazásához.

  2. Nyomkövetés – a nyomkövetési kód adatokat ír a megadott célhelyre.

  3. Elemzés – kiértékeli a nyomkövetési információkat az alkalmazás problémáinak azonosításához és megértéséhez.

A fejlesztés során az összes hibakeresési és nyomkövetési kimeneti metódus alapértelmezés szerint adatokat ír a Visual Studio Kimeneti ablakába. Egy üzembe helyezett alkalmazásban a metódusok nyomkövetési információkat írnak a megadott célokra. A nyomkövetési vagy hibakeresési kimeneti cél megadásáról további információt a Nyomkövetési figyelők című témakörben talál.

Az alábbiakban áttekintheti azokat a fő lépéseket, amelyek jellemzően a nyomkövetéssel kapcsolatosak az üzembe helyezett alkalmazások lehetséges problémáinak elemzéséhez és javításához. A lépések végrehajtásával kapcsolatos további információkért tekintse meg a megfelelő hivatkozást.

Nyomkövetés használata egy alkalmazásban
  1. Fontolja meg, hogy melyik nyomkövetési kimenetet szeretné a helyszínen fogadni az alkalmazás üzembe helyezése után.

  2. Kapcsolók készletének létrehozása. További információkért lásd: Nyomkövetési kapcsolók konfigurálása.

  3. Adja hozzá a nyomkövetési utasításokat az alkalmazáskódhoz.

  4. Határozza meg, hogy hol jelenjen meg a nyomkövetési kimenet, és adja hozzá a megfelelő figyelőket. További információ: Nyomkövetési figyelők létrehozása és inicializálása.

  5. Tesztelje és hibakeresse az alkalmazást és a benne található nyomkövetési kódot.

  6. Az alkalmazás lefordítása végrehajtható kódba az alábbi eljárások egyikével:

    • Használja a Build menüt és a Megoldáskezelő Tulajdonságlapok párbeszédpaneljének Hibakeresés lapját. Ezt a Visual Studióban való összeállításkor használhatja.

      -vagy-

    • Használja a nyomkövetési és hibakeresési fordító irányelveket a parancssori fordítási módszerhez. További információ: Feltételes fordítás nyomkövetéssel és hibakereséssel. Ezt használja a parancssorból való fordításkor.

  7. Ha a futtatás során probléma merül fel, kapcsolja be a megfelelő nyomkövetési kapcsolót. További információ: Nyomkövetési kapcsolók konfigurálása.

    A nyomkövetési kód nyomkövetési üzeneteket ír egy megadott célhelyre, például képernyőre, szövegfájlba vagy eseménynaplóba. A gyűjteményben Trace.Listeners szereplő figyelő típusa határozza meg a célt.

  8. Elemezze a nyomkövetési üzeneteket az alkalmazás problémájának azonosításához és megértéséhez.

Nyomkövető eszközök és elosztott alkalmazások

Elosztott alkalmazás létrehozásakor nehéz lehet az alkalmazást a használat módjának megfelelően tesztelni. Kevés fejlesztőcsapat képes tesztelni az operációs rendszerek vagy webböngészők összes lehetséges kombinációját (beleértve az összes honosított nyelvi beállítást), vagy szimulálni az alkalmazáshoz egyidejűleg hozzáférő felhasználók nagy számát. Ilyen körülmények között nem tesztelheti, hogy az elosztott alkalmazások hogyan reagálnak a nagy kötetekre, a különböző beállításokra és az egyedi végfelhasználói viselkedésre. Emellett az elosztott alkalmazások számos része nem rendelkezik olyan felhasználói felülettel, amellyel közvetlenül kommunikálhat, vagy megtekintheti ezeknek a részeknek a tevékenységeit.

Ezt azonban kompenzálhatja azáltal, hogy lehetővé teszi az elosztott alkalmazások számára, hogy a rendszer rendszergazdái számára érdekes eseményeket írjanak le, különösen azokat, amelyek hibásak, az alkalmazás rendszerezésével – azaz nyomkövetési utasítások stratégiai helyeken való elhelyezésével a kódban. Ezután, ha valami váratlan történik futásidőben (például túlzottan lassú válaszidő), meghatározhatja a valószínű okot.

Nyomkövetési utasításokkal elkerülheti az eredeti forráskód vizsgálatának, módosításának, újrafordításának és a hibakeresési környezet futásidejű hibájának előidézésének nehéz feladatát. Ne feledje, hogy az alkalmazásokat nemcsak a hibák megjelenítésére, hanem a teljesítmény monitorozására is használhatja.

A nyomkövetési utasítások stratégiai elhelyezése

A nyomkövető utasítások futás közbeni használatra való elhelyezésekor különös óvatossággal kell eljárnia. Meg kell fontolnia, hogy milyen nyomkövetési információkra lehet szükség egy üzembe helyezett alkalmazásban, hogy az összes valószínű nyomkövetési forgatókönyv megfelelően lefedve legyen. Mivel a nyomkövetést használó alkalmazások széles körben eltérőek, a nyomkövetés stratégiai elhelyezésére nincsenek általános irányelvek. További információ a nyomkövetési utasítások elhelyezéséről : Útmutató: Nyomkövetési utasítások hozzáadása az Alkalmazáskódhoz.

Kimenet nyomkövetésből

A nyomkövetési kimenetet figyelőknek nevezett objektumok gyűjtik össze. A figyelő olyan objektum, amely nyomkövetési kimenetet fogad, és egy kimeneti eszközre (általában egy ablakba, naplóba vagy szövegfájlba) írja. Ha létrehoz egy nyomkövetési figyelőt, az általában hozzá lesz adva a Trace.Listeners gyűjteményhez, így a figyelő az összes nyomkövetési kimenetet megkapja.

A nyomkövetési információk mindig legalább az alapértelmezett Trace kimeneti célba kerülnek írásra, a DefaultTraceListener. Ha valamilyen okból úgy törölte a DefaultTraceListener elemet, hogy nem adott hozzá más figyelőket a Listeners gyűjteményhez, akkor nem fog nyomkövetési üzeneteket kapni. További információ: Nyomkövetési figyelők.

A nyomkövetési adatokat megíró hat Debug tag és Trace metódus az alábbi táblázatban található.

Metódus Kimenet
Assert A megadott szöveg; vagy ha nincs megadva, a hívásverem. A kimenet csak akkor lesz megírva, ha az utasítás argumentumaként Assert megadott feltétel hamis.
Fail A megadott szöveg; vagy ha nincs megadva, a hívásverem.
Write A megadott szöveg.
WriteIf A megadott szöveg, ha az utasítás argumentumaként WriteIf megadott feltétel teljesül.
WriteLine A megadott szöveg és egy kocsi visszaküldése.
WriteLineIf A megadott szöveg és a kocsi visszatérése, ha az utasítás argumentumaként WriteLineIf megadott feltétel teljesül.

A gyűjtemény minden figyelője megkapja a Listeners fenti táblázatban leírt üzeneteket, de a végrehajtott műveletek attól függően változhatnak, hogy milyen figyelő fogadja az üzenetet. Például a DefaultTraceListener állítási párbeszédpanel jelenik meg, amikor Fail vagy sikertelen Assert értesítést kap, de a TextWriterTraceListener egyszerűen a saját streamjébe írja az adatokat.

Saját hallgató implementálásával hozhat létre egyéni eredményeket. Az egyéni nyomkövetési figyelők megjeleníthetik például az üzeneteket egy üzenetmezőbe, vagy csatlakozhatnak egy adatbázishoz, hogy üzeneteket vegyenek fel egy táblába. Minden egyéni figyelőnek támogatnia kell a fent említett hat metódust. A fejlesztő által definiált figyelők létrehozásáról a .NET-keretrendszer referenciájában talál TraceListener további információt.

A Write metódusok és WriteLine a metódusok mindig megírják a megadott szöveget. Assert, WriteIfés WriteLineIf logikai argumentumot igényel, amely azt szabályozza, hogy a megadott szöveget írja-e vagy sem, a megadott szöveget csak akkor írja, ha a kifejezés igaz (és WriteIfWriteLineIf), vagy hamis (a következőhöz Assert). A Fail metódus mindig a megadott szöveget írja. További információkért lásd Hogyan: Nyomkövetési kijelentések hozzáadása a programkódhoz és a .NET-keretrendszer referenciáját.

Biztonsági problémák

Ha nem tiltja le a nyomkövetést és a hibakeresést egy ASP.NET-alkalmazás üzembe helyezése előtt, előfordulhat, hogy az alkalmazás olyan információkat jelenít meg magáról, amelyeket egy rosszindulatú program kihasználhat. További információért lásd: Hogyan: Feltételes fordítás nyomkövetéssel és hibakereséssel, Hogyan: Fordítás és építés, valamint Hogyan: Nyomkövetési kapcsolók létrehozása, inicializálása és konfigurálása. A hibakeresés az Internet Information Services (IIS) használatával is konfigurálható.

Lásd még