Megosztás:


Nyomkövetési adatok elérése

A .NET TraceProcessing NuGet a következő csomagazonosítóval érhető el:

Microsoft.Windows.EventTracing.Processing.All

Ez a csomag lehetővé teszi a nyomkövetési fájlban lévő adatok elérését. Ha még nem rendelkezik nyomkövetési fájllal, Windows Teljesítményrögzítő használatával hozhat létre egyet.

Az alábbi példakonzolalkalmazás bemutatja, hogyan érheti el a nyomkövetésben található összes folyamat parancssorát:

using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;

class Program
{
    static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.Error.WriteLine("Usage: <trace.etl>");
            return;
        }

        using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
        {
            IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();

            trace.Process();

            IProcessDataSource processData = pendingProcessData.Result;

            foreach (IProcess process in processData.Processes)
            {
                Console.WriteLine(process.CommandLine);
            }
        }
    }
}

A TraceProcessor használata

Nyomkövetés feldolgozásához hívja meg a TraceProcessor.Create parancsot. Az alapvető interfész az ITraceProcessor, és ennek az interfésznek a használata a következő mintát foglalja magában:

  1. Először mondja el a feldolgozónak, hogy milyen adatokat szeretne használni egy nyomkövetésből
  2. Másodszor, dolgozza fel a nyomkövetést; és
  3. Végül hozzáférés az eredményekhez.

Ha előre meg szeretné mondani a feldolgozónak, hogy milyen típusú adatokat szeretne, az azt jelenti, hogy nem kell sok időt töltenie az összes lehetséges nyomkövetési adat nagy mennyiségének feldolgozásával. Ehelyett a TraceProcessor csak azokat a feladatokat végzi el, amelyek a kért adattípusok megadásához szükségesek.

A TraceProcessor használata több projektbeállítást is javasol:

  1. Azt javasoljuk, hogy az exe-ket 64 bitesként futtassa.

    Az új C# .NET-keretrendszer konzolalkalmazáshoz a Visual Studio alapértelmezett beállítása a "Bármely processzor", amelynél a "Preferálja a 32 bitet" ki van jelölve. Előfordulhat, hogy a .NET alapértelmezett beállítása már rendelkezik az ajánlott beállítással.

    A nyomkövetési feldolgozás memóriaigényes lehet, különösen nagyobb nyomkövetések esetén, és javasoljuk, hogy módosítsa a platformcélt x64-re (vagy törölje a 32 bites előnyben részesítés jelölését) a TraceProcessort használó exe-kben. A beállítások módosításához tekintse meg a projekt Tulajdonságok csoportjában található Build lapot. Ha módosítani szeretné ezeket a beállításokat az összes konfigurációhoz, győződjön meg arról, hogy a Konfiguráció legördülő lista az összes konfigurációra van állítva, nem pedig csak az aktuális konfiguráció alapértelmezett beállítására.

  2. Javasoljuk, hogy a NuGetet a régebbi packages.config mód helyett az újabb stílusú PackageReference móddal használja.

    Az új projektek alapértelmezett értékének módosításáról az Eszközök, a NuGet Package Manager, a Csomagkezelő beállításai, a Csomagkezelés és az Alapértelmezett csomagkezelési formátum című témakörben olvashat.

Beépített adatforrások

Az .etl-fájlok sokféle adatot rögzíthetnek egy nyomkövetésben. Vegye figyelembe, hogy az .etl-fájlban lévő adatok attól függenek, hogy a nyomkövetés rögzítésekor mely szolgáltatók voltak engedélyezve. Az alábbi lista a TraceProcessorból elérhető nyomkövetési adatokat mutatja be:

Kód Leírás Kapcsolódó WPA-elemek
nyomkövetés.UseClassicEvents() Klasszikus ETW-eseményeket biztosít egy nyomkövetésből, amelyek nem tartalmaznak sémainformációkat. Általános események tábla (ha az eseménytípus klasszikus vagy WPP)
nyom. UseConnectedStandbyData() Adatokat biztosít a csatlakoztatott készenléti állapotba lépő és onnan kilépő rendszer nyomkövetési adataiból. CS összefoglaló táblázat
követés. HasználdACpuTétlenÁllapotokat() Adatokat szolgáltat egy nyomkövetésből a processzor C-állapotokkal kapcsolatban. Cpu tétlen állapotok táblázata (ha a típus tényleges)
nyomvonal.UseCpuSamplingData() Adatokat biztosít a processzorhasználat nyomkövetéséből az utasításmutató rendszeres mintavételezése alapján. CPU-használat (mintául szolgáló) tábla
nyom.UseCpuSchedulingData() Adatokat biztosít a cpu-szál ütemezéséről, beleértve a környezeti kapcsolókat és a kész száleseményeket. CPU-használat (pontos) táblázat
követés. UseDevicePowerData() Adatokat biztosít az eszköz D-állapotainak nyomkövetéséből. Eszköz DState táblája
nyom. UseDirectXData() A DirectX-tevékenység nyomon követéséből biztosít adatokat. GPU-kihasználtsági táblázat
traceUseDiskIOData() Adatokat biztosít a lemez I/O-tevékenységének nyomkövetéséből. Lemezhasználati táblázat
nyomkövetés.UseEnergyEstimationData() Az energiabecslési motorból származó becsült folyamatonkénti energiahasználatra vonatkozó nyomkövetési adatokból nyújt adatokat. Energiabecslési rendszer összefoglaló táblázat (folyamat szerint)
energiaMérőAdatátHasznál() Adatokat szolgáltat a mért energiahasználat nyomon követéséről az Energy Meter Interface (EMI) segítségével. Energiabecslési motor (Emi szerint) táblázat
nyomkövetés.UseFileIOData() A fájl I/O-tevékenységének nyomkövetéséből biztosít adatokat. Fájl I/O táblázat
nyom. UseGenericEvents() Egy nyomkövetésből származó jegyzékbeli és TraceLogging-eseményeket biztosít. Általános események táblázat (amikor az esemény típusa 'Megnyilvánult' vagy 'TraceLogging')
nyom. HasználjaKezeleket() Részleges adatokat biztosít az aktív kernelfogantyúk nyomkövetéséből. A tábla fogópontjai
nyom. AHardFaults() használata Adatokat biztosít a kemény oldalhibákkal kapcsolatos nyomkövetésből. Hard Faults táblázat
nyomkövetés.UseHeapSnapshots() Adatokat biztosít a folyamat halomhasználatáról szóló nyomkövetésből. Heap pillanatkép táblázata
trace.UseHypercalls() használata Adatokat biztosít Hyper-V nyomkövetés során történt hiperhívásokról.
nyom.KépRészletekHasználata() A rendszerkép szakaszainak nyomkövetéséből biztosít adatokat. A CPU-használat (mintavételezett) táblázat Szakasz név oszlopa
követés.UseInterruptHandlingData() Adatokat biztosít a megszakítási szolgáltatási rutin (ISR) és a késleltetett eljáráshívás (DPC) tevékenységéről. DPC/ISR tábla
nyom.HasználjJelölőket() A nyomkövetésből származó jeleket (címkézett időbélyegeket) adja meg. Jelzések táblázata
nyom. UseMemoryUtilizationData() A teljes rendszermemória-kihasználtság nyomkövetéséből biztosít adatokat. Memóriakihasználtsági táblázat
nyom.HasználjaMetadatot() További feldolgozás nélkül elérhető nyomkövetési metaadatokat biztosít. Rendszerkonfiguráció, nyomkövetések és általános
nyomkövetés.HasználjaPlatformIdleStates() Adatokat nyújt egy nyomkövetésből a rendszer cél- és tényleges platform tétlen állapotáról. Platform inaktív állapot táblája
követés.HasználjonMemóriaAllokációkat() Adatokat biztosít a kernelkészlet memóriahasználatáról szóló nyomkövetésből. Készletösszegző tábla
UsePowerConfigurationData() nyomkövetése Adatokat biztosít a rendszer energiakonfigurációjának nyomkövetéséből. Rendszerkonfiguráció, Energiabeállítások
követés.UsePowerDependencyCoordinatorData() Adatokat biztosít az aktív teljesítményfüggőség-koordinátor fázisairól. Értesítési fázis összegzési táblázata
nyom.UseProcesses() Adatokat biztosít a nyomkövetés során aktív folyamatokról, valamint azok rendszerképeiről és PDF-eiről. Folyamattábla; Képek táblázat; Symbols Hub
nyom. UseProcessorCounters() Adatokat biztosít a processzorteljesítmény-számláló értékeivel kapcsolatos nyomkövetésből a Processzorszámláló monitorból (PCM).
UseProcessorFrequencyData() A processzorok futási gyakoriságának nyomon követéséből biztosít adatokat. Processzorfrekvencia-táblázat (ha a típus tényleges)
nyom. UseProcessorProfileData() Adatokat biztosít az aktív processzor teljesítményprofiljának nyomkövetéséből. Processzorprofil-tábla
nyomonkövetés.HasználjaAProcesszorParkolásiAdatokat() Adatokat biztosít egy nyomkövetésből, amelyből megtudhatja, hogy mely processzorok parkoltak le vagy nem parkoltak le. Processzor parkolási állapota tábla
nyomkövetés.HasználjaProcesszorfoglalásiKorlátokat() A nemparkolt processzorok maximális megengedett számának nyomkövetéséből biztosít adatokat. Mag processzor lekapcsolási állapot tábla
nyomon.KezeljeProcesszorMinőségiSzolgáltatásiAdatokat() Az egyes processzorok szolgáltatási szintjének minőségével kapcsolatos nyomkövetési adatok. Processzor Qos osztálytáblája
nyomkövetés.UseProcessorThrottlingData() Adatokat biztosít a processzor maximális gyakoriságának szabályozásáról szóló nyomkövetésből. Processzorkorlátok tábla
nyomkövetés.UseReadyBootData() Adatokat biztosít a Ready Boot rendszerindítás előtti tevékenységével kapcsolatos nyomkövetésből. Ready Boot eseménytábla
nyomkövet.UseReferenceSetData() Az egyes folyamatok által használt virtuális memória lapjainak nyomkövetéséből biztosít adatokat. Referenciatáblázat
nyomkövetés.HasználjaAzÉrdeklődésiTerületeket() Egy xml-konfigurációs fájlban megadott nyomkövetési intervallumok nevesített régióit tartalmazza. Az Érdeklődési Területek táblázata
követés.UseRegistryData() Adatokat szolgáltat a beállításjegyzék-tevékenységről a nyomkövetés során. Nyilvántartási tábla
nyomon_kovet.UseResidentSetData() Adatokat biztosít a virtuális memória lapjainak nyomkövetéséből minden olyan folyamathoz, amely a fizikai memóriában található. Rezidens készlet tábla
nyom. UseRundownData() Olyan időközökről biztosít adatokat, amelyek során lefutott nyomkövetési adatgyűjtés történt. Árnyékolt régiók a gráf ütemtervében
trace.UseScheduledTasks() használata Adatokat biztosít a nyomkövetés során futtatott ütemezett tevékenységekről. Ütemezett feladatok tábla
nyom. UseServices() Adatokat szolgáltat azokról a szolgáltatásokról, amelyek aktívak voltak, vagy amelyek állapotát rögzítették egy nyomkövetés során. Szolgáltatástábla; Rendszerkonfiguráció, szolgáltatások
követés.UseStacks() A nyomkövetés során rögzített veremekről nyújt adatokat.
nyom. UseStackEvents() Információt nyújt a nyomkövetési folyam során rögzített veremekhez kapcsolódó eseményekről. Verem táblázat
nyom. UseStackTags() Egy olyan leképezőt biztosít, amely a nyomkövetés veremeit csoportosítja veremcímkékké egy XML-konfigurációs fájlban megadottak szerint. Oszlopok, például veremcímke és verem (keretcímkék)
kód.KövesseASzimbólumokat() Lehetővé teszi a nyomkövetés szimbólumainak betöltését. Szimbólumútvonalak konfigurálása; Szimbólumok betöltése
nyomkövetés.UseSyscalls() Adatokat biztosít a nyomkövetés során történt syscall-okról. Rendszerhívások táblázata
nyom.KezeliARendszerMetadadatait() Általános, rendszerszintű metaadatokat biztosít egy nyomkövetésből. Rendszerkonfiguráció
nyomkövetés.UseSystemPowerSourceData() Adatokat biztosít az aktív rendszer energiaforrásának nyomkövetéséből (AC és DC). Rendszer energiaforrás táblázat
Nyomkövetés.HasználdRendszerAlvásAdat() A rendszer teljes energiaállapotának nyomon követéséből biztosít adatokat. Teljesítményátmeneti tábla
nyomkövetés.HasználdACélCpuTétlenÁllapotait() Adatokat biztosít a cél CPU C-állapotairól szóló nyomkövetésből. Cpu tétlen állapotok táblázata (ha a típus cél)
nyomkövetés.UseTargetProcessorFrequencyData() Adatokat biztosít a célprocesszor-frekvenciák nyomkövetéséből. Processzorfrekvencia-táblázat (ha a típus cél)
nyomkövetés.HasználjSzálakat() Adatokat biztosít a nyomkövetés során aktív szálakról. Élettartamok táblázata szálakhoz
nyomkövetés.HasználjaANyomkövetésiStatisztikákat() Statisztikát nyújt a nyomkövetésben lévő eseményekről. Rendszerkonfiguráció, nyomkövetési statisztikák
nyom. UseUtcData() Adatokat biztosít a Microsoft telemetriai tevékenységéről a Universal Telemetry Client (UTC) használatával. Időzóna tábla
nyomkövetés.UseWindowInFocus() Adatokat biztosít a fókuszban lévő aktív felhasználói felület ablakának változásairól szóló nyomkövetésből. A Fókusz táblában lévő ablak
nyom.HasználjaAWindowsNyomElőfeldolgozóEseményeket() Windows szoftverkövetési előfeldolgozás (WPP) eseményeket biztosít egy nyomkövetés során. WPP Trace tábla; Általános események tábla (ha az esemény típusa WPP)
nyom. UseWinINetData() A Windows Interneten (WinINet) keresztül végzett internetes tevékenység nyomon követéséből biztosít adatokat. "Részletek táblázat letöltése"
Trace.UseWorkingSetData() Az egyes folyamatok vagy kernelkategóriák munkakészletében lévő virtuális memória lapjainak nyomkövetéséből biztosít adatokat. A virtuális memória pillanatképeinek táblája

Tekintse meg az ITraceSource bővítménymetódusait is az összes elérhető nyomkövetési adathoz, vagy vizsgálja meg az IntelliSense által bemutatott "nyomkövetési" metódust.

Következő lépések

Ebben az áttekintésben megtanulta, hogyan férhet hozzá nyomkövetési adatokhoz a TraceProcessor és az általa elérhető beépített adatforrások használatával.

A következő lépésben megtudhatja, hogyan bővítheti a TraceProcessort az egyéni nyomkövetési adatok eléréséhez.