Alkalmazások nyomon követése és műszerezése

A nyomkövetési módszer segítségével monitorozhatja az alkalmazás végrehajtását futás közben. A fejlesztés során nyomkövetési és hibakeresési rendszerállapotokat adhat hozzá a .NET-keretrendszer alkalmazáshoz, és ezt a rendszerállapotot az alkalmazás fejlesztésekor és az üzembe helyezés után is használhatja. A , System.Diagnostics.Debugés az System.Diagnostics.Traceosztá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ót az osztályban EventLog talál.

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ás nem csak az információk megjelenítésére szolgál, amikor a dolgok hibásak lesznek, hanem az alkalmazás teljesítményének figyelésére is.

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 használják, de az TraceSource osztályt új nyomkövetési parancsokhoz, 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élda:

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

Ezek a példák a ""Helló világ!" alkalmazás!" értéket jelenítik 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ó : Ú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ó : 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ó : Ú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. Rendszerállapot – nyomkövetési kódot ad hozzá az alkalmazáshoz.

  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ó : Útmutató: 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 hibakereséssel tesztelje 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 Tulajdonságlapok párbeszédpanel hibakeresési lapját Megoldáskezelő. 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ési rendszerállapot é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ési utasítások futás közbeni használatra való elhelyezésekor különös figyelmet kell gyakorolnia. 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élhoz, 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 Hozam
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 egy DefaultTraceListener helyességi párbeszédpanel jelenik meg, amikor egy vagy több sikertelen Assert értesítést kapFail, de a TextWriterTraceListener kimenetet egyszerűen a streambe írja.

Egyéni eredményeket saját figyelő implementálásával hozhat létre. 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ával kapcsolatos további információkért lásd TraceListener a .NET-keretrendszer referenciá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 WriteLineIfWriteIf ), vagy hamis (a következőhözAssert). A Fail metódus mindig a megadott szöveget írja. További információ: Útmutató: Nyomkövetési utasítások hozzáadása az Alkalmazáskódhoz és a .NET-keretrendszer hivatkozás.

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ó : Feltételes fordítás nyomkövetéssel és hibakereséssel, fordítás és létrehozás, valamint útmutató: 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