dotnet-trace teljesítményelemzési segédprogram

Ez a cikk a következő verziókra vonatkozik: ✔️ dotnet-trace 3.0.47001 és újabb verziók

Telepítés

Kétféleképpen tölthető le és telepíthető dotnet-trace:

Megjegyzés:

dotnet-trace X86-alkalmazásokhoz az eszköz megfelelő x86-os verziójára van szükség.

Szinopszis

dotnet-trace [-h, --help] [--version] <command>

Leírás

Az dotnet-trace eszköz:

  • Platformfüggetlen .NET Core-eszköz.
  • Lehetővé teszi egy futó folyamat .NET Core-nyomkövetéseinek gyűjtését natív profilkészítő nélkül.
  • A .NET Core-futtatókörnyezetre EventPipe épül.
  • Ugyanezt a felhasználói élményt nyújtja Windows, Linux vagy macOS rendszeren is.

Beállítások

  • -h|--help

    Parancssori súgót jelenít meg.

  • --version

    Megjeleníti a dotnet-trace segédprogram verzióját.

  • --duration

    Mennyi ideig futtassa a nyomkövetést. --duration 00:00:00:05 5 másodpercig futtatja.

Parancsok

Parancs
dotnet-trace collect
dotnet-trace konvertálás
dotnet-trace ps
dotnet-trace list-profiles
dotnet-trace jelentés

dotnet-trace collect

Diagnosztikai nyomkövetést gyűjt egy futó folyamatból, vagy elindít egy gyermekfolyamatot, és nyomon követi azt (.NET 5 vagy újabb). Ha azt szeretné, hogy az eszköz futtasson egy gyermekfolyamatot, és nyomon kövesse azt az indításkor, fűzze hozzá -- a collect parancshoz.

Szinopszis

dotnet-trace collect [--buffersize <size>] [--clreventlevel <clreventlevel>] [--clrevents <clrevents>]
    [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [--duration dd:hh:mm:ss]
    [-n, --name <name>] [--diagnostic-port] [-o|--output <trace-file-path>] [-p|--process-id <pid>]
    [--profile <profile-name>] [--providers <list-of-comma-separated-providers>]
    [-- <command>] (for target applications running .NET 5 or later)
    [--show-child-io] [--resume-runtime]
    [--stopping-event-provider-name <stoppingEventProviderName>]
    [--stopping-event-event-name <stoppingEventEventName>]
    [--stopping-event-payload-filter <stoppingEventPayloadFilter>]

Beállítások

  • --buffersize <size>

    A memóriabeli puffer méretét megabájtban állítja be. Alapértelmezett 256 MB.

    Megjegyzés:

    Ha a célfolyamat gyorsabban bocsát ki eseményeket, mint amennyit a lemezre írhat, a puffer túlcsordulhat, és egyes eseményeket elvethet. Ezt a problémát a puffer méretének növelésével vagy a rögzítendő események számának csökkentésével háríthatja el.

  • --clreventlevel <clreventlevel>

    A kibocsátandó CLR-események részletessége. Az alábbi táblázat az elérhető eseményszinteket mutatja be.

    Sztring Számérték
    logalways 0
    critical 1
    error 2
    warning 3
    informational 4
    verbose 5
  • --clrevents <clrevents>

    A CLR-futtatókörnyezet-szolgáltató kulcsszavainak listája, amelyeket jelek választanak el egymástól + . Ez egy egyszerű leképezés, amellyel sztring aliasok használatával adhat meg esemény kulcsszavakat a hexa értékek helyett. Például ugyanazt az eseménykészletet kéri le, dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4 mint a dotnet-trace collect --clrevents gc+gchandle --clreventlevel informational. Az alábbi táblázat az elérhető kulcsszavak listáját mutatja:

    Kulcsszó sztring aliasa Kulcsszó hexa értéke
    gc 0x1
    gchandle 0x2
    fusion 0x4
    loader 0x8
    jit 0x10
    ngen 0x20
    startenumeration 0x40
    endenumeration 0x80
    security 0x400
    appdomainresourcemanagement 0x800
    jittracing 0x1000
    interop 0x2000
    contention 0x4000
    exception 0x8000
    threading 0x10000
    jittedmethodiltonativemap 0x20000
    overrideandsuppressngenevents 0x40000
    type 0x80000
    gcheapdump 0x100000
    gcsampledobjectallocationhigh 0x200000
    gcheapsurvivalandmovement 0x400000
    gcheapcollect 0x800000
    gcheapandtypenames 0x1000000
    gcsampledobjectallocationlow 0x2000000
    perftrack 0x20000000
    stack 0x40000000
    threadtransfer 0x80000000
    debugger 0x100000000
    monitoring 0x200000000
    codesymbols 0x400000000
    eventsource 0x800000000
    compilation 0x1000000000
    compilationdiagnostic 0x2000000000
    methoddiagnostic 0x4000000000
    typediagnostic 0x8000000000

    A CLR-szolgáltatóról részletesebben a .NET futtatókörnyezet-szolgáltató referenciadokumentációjában olvashat.

  • --format {Chromium|NetTrace|Speedscope}

    Beállítja a nyomkövetési fájl konvertálásának kimeneti formátumát. Az alapértelmezett érték NetTrace.

  • -n, --name <name>

    Annak a folyamatnak a neve, amelyből a nyomkövetést gyűjti.

  • --diagnostic-port <path-to-port>

    A létrehozandó diagnosztikai port neve. A nyomkövetés alkalmazásindításból való gyűjtéséről a diagnosztikai port használata című témakörben olvashat, amelyből megtudhatja, hogyan gyűjthet nyomkövetést az alkalmazásindításból.

  • --duration <time-to-run>

    A nyomkövetés futtatásának ideje. Használja a dd:hh:mm:ss formátumot. Például 00:00:00:05 5 másodpercig futtatja.

  • -o|--output <trace-file-path>

    Az összegyűjtött nyomkövetési adatok kimeneti elérési útja. Ha nincs megadva, alapértelmezés szerint <appname>_<yyyyMMdd>_<HHmmss>.nettracea "myapp_20210315_111514.nettrace" lesz.

  • -p|--process-id <PID>

    A nyomkövetést összegyűjtő folyamatazonosító.

  • --profile <profile-name>

    A szolgáltatókonfigurációk nevesített előre definiált készlete, amely lehetővé teszi a gyakori nyomkövetési forgatókönyvek tömör megadását. A következő profilok érhetők el:

Profil Leírás
cpu-sampling Hasznos a processzorhasználat és az általános .NET-futtatókörnyezeti információk nyomon követéséhez. Ez az alapértelmezett beállítás, ha nincs megadva profil vagy szolgáltató.
gc-verbose Nyomon követi a GC-gyűjteményeket és -mintákat az objektumfoglalásokon.
gc-collect A GC-gyűjteményeket csak nagyon alacsony terhelés mellett követi nyomon.
  • --providers <list-of-comma-separated-providers>

    Az engedélyezendő szolgáltatók vesszővel tagolt listája EventPipe . Ezek a szolgáltatók kiegészítik azokat a szolgáltatókat, amelyeket a --profile <profile-name>. Ha van inkonzisztenciája egy adott szolgáltatónak, ez a konfiguráció elsőbbséget élvez a profil implicit konfigurációjával szemben.

    A szolgáltatók listája a következő formában érhető el:

    • Provider[,Provider]
    • Provider a következő formában van: KnownProviderName[:Flags[:Level][:KeyValueArgs]].
    • KeyValueArgs a következő formában van: [key1=value1][;key2=value2].

    Ha többet szeretne megtudni a .NET ismert szolgáltatóiról, tekintse meg a jól ismert eseményszolgáltatókat.

  • -- <command> (.NET 5 vagy újabb verziót futtató célalkalmazások esetén)

    A gyűjteménykonfigurációs paraméterek után a felhasználó hozzáfűzhet -- egy parancsot, amellyel elindíthat egy .NET-alkalmazást legalább 5.0-s futtatókörnyezettel. Ez hasznos lehet a folyamat korai szakaszában előforduló problémák diagnosztizálásakor, például az indítási teljesítménysel vagy a szerelvénybetöltő és a kötőanyag hibáival kapcsolatban.

    Megjegyzés:

    Ezzel a beállítással figyeli az első .NET 5 folyamatot, amely visszakomlik az eszközhöz, ami azt jelenti, hogy ha a parancs több .NET-alkalmazást indít el, az csak az első alkalmazást fogja összegyűjteni. Ezért javasoljuk, hogy használja ezt a lehetőséget önálló alkalmazásokban, vagy használja a dotnet exec <app.dll> lehetőséget.

  • --show-child-io

    Egy elindított gyermekfolyamat bemeneti és kimeneti adatfolyamait jeleníti meg az aktuális konzolon.

  • --resume-runtime

    A munkamenet inicializálása után folytassa a futtatókörnyezetet, alapértelmezés szerint igaz lesz. Tiltsa le a futtatókörnyezet folytatását a --resume-runtime:false paranccsel.

  • --stopping-event-provider-name

    Egy másként értelmezett sztring, amely leállítja a nyomkövetést, amikor egy egyező szolgáltatónévvel rendelkező eseményt ér el. Egy konkrétabb leállítási eseményhez adja meg és/vagy --stopping-event-payload-filteradja meg --stopping-event-event-name a következőt: például --stopping-event-provider-name Microsoft-Windows-DotNETRuntime állítsa le a nyomkövetést az eseményszolgáltató által Microsoft-Windows-DotNETRuntime kibocsátott első esemény eléréséhez.

  • --stopping-event-event-name

    Egy másként értelmezett sztring, amely leállítja a nyomkövetést, amikor egy eseményt a megfelelő eseménynévvel ér el. Be --stopping-event-provider-name kell állítani. Egy konkrétabb leállítási eseményhez adja meg --stopping-event-payload-filtera . például --stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted állítsa le a nyomkövetést az eseményszolgáltató által Microsoft-Windows-DotNETRuntime kibocsátott első Method/JittingStarted esemény eléréséhez.

  • --stopping-event-payload-filter

    Vesszővel elválasztott [payload_field_name]:[payload_field_value] párként értelmezett sztring, amely az összes megadott hasznos adatpárt tartalmazó esemény lenyomásakor leállítja a nyomkövetést. Szükség van --stopping-event-provider-name a beállításra és --stopping-event-event-name a beállításra. például --stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick állítsa le a nyomkövetést az eseményszolgáltató által kibocsátott névtérben lévő Program metódus OnButtonClick első Method/JittingStarted eseménye Microsoft-Windows-DotNETRuntime után.

Megjegyzés:

  • A nyomkövetés leállítása hosszú időt (akár perceket) is igénybe vehet a nagy alkalmazások esetében. A futtatókörnyezetnek át kell küldenie a típusgyorsítótárat a nyomkövetésben rögzített összes felügyelt kódhoz.
  • Linux és macOS rendszeren ez a parancs elvárja a célalkalmazást, és dotnet-trace ugyanazt TMPDIR a környezeti változót használja. Ellenkező esetben a parancs időtúllépést fog végrehajtani.
  • A nyomkövetést a célfolyamatot dotnet-tracefuttató felhasználóval azonos felhasználóként vagy gyökérként kell futtatni. Ellenkező esetben az eszköz nem fog kapcsolatot létesíteni a célfolyamattal.
  • Ha a következőhöz hasonló hibaüzenet jelenik meg, [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process.olyan verziót dotnet-trace próbál használni, amelynek bitje nem egyezik a célfolyamattal. Győződjön meg arról, hogy letölti az eszköz megfelelő bitképességét a telepítési hivatkozásba.
  • Ha futás dotnet-trace collectközben kezeletlen kivételt tapasztal, az hiányos nyomkövetést eredményez. Ha a kivétel kiváltó okának megkeresése a prioritás, keresse meg az összeomláskor található memóriaképek gyűjtését. A kezeletlen kivétel miatt a rendszer csonkolja a nyomkövetést, amikor a futtatókörnyezet leáll, hogy megakadályozza az egyéb nem kívánt viselkedést, például lefagyást vagy adatsérülést. Annak ellenére, hogy a nyomkövetés hiányos, továbbra is megnyithatja, hogy lássa, mi történt a hibához vezetően. Hiányoznak azonban a lefutási adatok (ez a nyomkövetés végén történik), így a veremek feloldatlanok lehetnek (attól függően, hogy a szolgáltatók milyen szolgáltatókat kapcsoltak be). Nyissa meg a nyomkövetést a PerfView parancssori jelölővel történő végrehajtásával /ContinueOnError . A naplók tartalmazzák a kivétel aktivált helyét is.
  • Ha a beállításokon keresztül --stopping-event-* ad meg egy leállási eseményt, mivel az EventStream aszinkron módon van elemezve, a megadott leállási esemény beállításainak megfelelő nyomkövetési esemény elemzése és az EventPipeSession leállítása között lesznek események.

dotnet-trace konvertálás

A nyomkövetéseket nettrace alternatív formátumokká alakítja át, hogy alternatív nyomkövetési elemzési eszközökkel használható legyen.

Szinopszis

dotnet-trace convert [<input-filename>] [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [-o|--output <output-filename>]

Arguments

  • <input-filename>

    Konvertálandó bemeneti nyomkövetési fájl. A trace.nettrace alapértelmezett értéke.

Beállítások

  • --format <Chromium|NetTrace|Speedscope>

    Beállítja a nyomkövetési fájl konvertálásának kimeneti formátumát.

  • -o|--output <output-filename>

    Kimeneti fájlnév. A program hozzáadja a célformátum bővítményét.

Megjegyzés:

A fájlok chromiumspeedscope konvertálása nettrace visszafordíthatatlan. speedscope és chromium a fájlok nem rendelkeznek a fájlok rekonstruálásához nettrace szükséges összes információval. A convert parancs azonban megőrzi az eredeti nettrace fájlt, ezért ne törölje ezt a fájlt, ha a jövőben meg szeretné nyitni.

dotnet-trace ps

Felsorolja azokat a dotnet-folyamatokat, amelyekből a nyomkövetések gyűjthetők. dotnet-trace A 6.0.320703-as és újabb verziókban az egyes folyamatok által elindított parancssori argumentumok is megjelennek, ha elérhetők.

Szinopszis

dotnet-trace ps [-h|--help]

Példa

Tegyük fel, hogy a paranccsal dotnet run --configuration Releaseelindít egy hosszú ideig futó alkalmazást. Egy másik ablakban futtassa a dotnet-trace ps parancsot. A megjelenő kimenet a következő. Ha elérhető, a parancssori argumentumok a 6.0.320703-as és újabb verzióban dotnet-trace jelennek meg.

> dotnet-trace ps
  
  21932 dotnet     C:\Program Files\dotnet\dotnet.exe   run --configuration Release
  36656 dotnet     C:\Program Files\dotnet\dotnet.exe

dotnet-trace list-profiles

Az előre összeállított nyomkövetési profilokat listázza, és leírja, hogy mely szolgáltatók és szűrők találhatók az egyes profilokban.

Szinopszis

dotnet-trace list-profiles [-h|--help]

dotnet-trace jelentés

Jelentés létrehozása stdout-ba egy korábban létrehozott nyomkövetésből.

Szinopszis

dotnet-trace report [-h|--help] <tracefile> [command]

Arguments

  • <tracefile>

    Az elemzett nyomkövetés fájlútvonala.

Parancsok

dotnet-trace jelentés topN

Megkeresi azokat a leggyakoribb N metódusokat, amelyek a híváscsatán voltak a leghosszabb ideig.

Szinopszis
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Beállítások
  • -n|--number <n>

Megadja a híváshívás legfontosabb N metódusait.

  • --inclusive

A felső N metódusok kimenete a befogadó idő alapján. Ha nincs megadva, alapértelmezés szerint a kizárólagos időt használja a rendszer.

  • -v|--verbose

Adja ki az egyes metódusok paramétereit teljes egészében. Ha nincs megadva, a paraméterek csonkulnak.

Nyomkövetés összegyűjtése dotnet-trace használatával

Nyomkövetések gyűjtése a következő használatával dotnet-trace:

  • Kérje le a .NET Core-alkalmazás folyamatazonosítóját (PID) a nyomkövetések gyűjtéséhez.

    • Windows rendszeren használhatja például a Feladatkezelőt vagy a tasklist parancsot.
    • Linuxon például a ps parancs.
    • dotnet-trace ps
  • Futtassa az alábbi parancsot:

    dotnet-trace collect --process-id <PID>
    

    Az előző parancs a következőhöz hasonló kimenetet hoz létre:

    Press <Enter> to exit...
    Connecting to process: <Full-Path-To-Process-Being-Profiled>/dotnet.exe
    Collecting to file: <Full-Path-To-Trace>/trace.nettrace
    Session Id: <SessionId>
    Recording trace 721.025 (KB)
    
  • A kulcs lenyomásával állítsa le a gyűjteményt <Enter> . dotnet-trace befejezi a nyomkövetés.nettrace fájlba történő naplózási eseményeket.

Gyermekalkalmazás indítása és nyomkövetés gyűjtése az indításból dotnet-trace használatával

Fontos

Ez csak .NET 5 vagy újabb verziót futtató alkalmazások esetén működik.

Néha hasznos lehet egy folyamat nyomának összegyűjtése az indításból. A .NET 5-ös vagy újabb verzióját futtató alkalmazások esetében ezt a dotnet-trace használatával teheti meg.

Ez parancssori argumentumokkal arg1 indul elhello.exe, arg2 és nyomkövetést gyűjt a futtatókörnyezet indításakor:

dotnet-trace collect -- hello.exe arg1 arg2

Az előző parancs a következőhöz hasonló kimenetet hoz létre:

No profile or providers specified, defaulting to trace profile 'cpu-sampling'

Provider Name                           Keywords            Level               Enabled By
Microsoft-DotNETCore-SampleProfiler     0x0000F00000000000  Informational(4)    --profile
Microsoft-Windows-DotNETRuntime         0x00000014C14FCCBD  Informational(4)    --profile

Process        : E:\temp\gcperfsim\bin\Debug\net5.0\gcperfsim.exe
Output File    : E:\temp\gcperfsim\trace.nettrace


[00:00:00:05]   Recording trace 122.244  (KB)
Press <Enter> or <Ctrl+C> to exit...

A nyomkövetést leállíthatja a lenyomással vagy <Ctrl + C> a kulccsal<Enter>. Ha ezt teszi, az is kilép hello.exe.

Megjegyzés:

A dotnet-trace használatával történő hello.exe indítás átirányítja a bemenetét/kimenetét, és alapértelmezés szerint nem fogja tudni használni a konzolon. Használja a kapcsolót a --show-child-io stdin/stdout használatához. Ha a CTRL+C vagy a SIGTERM billentyűkombinációval lép ki az eszközből, az biztonságosan befejezi az eszközt és a gyermekfolyamatot is. Ha a gyermekfolyamat az eszköz előtt kilép, az eszköz is kilép, és a nyomkövetésnek biztonságosan megtekinthetőnek kell lennie.

Nyomkövetés gyűjtése az alkalmazásindításból a diagnosztikai port használatával

Fontos

Ez csak .NET 5 vagy újabb verziót futtató alkalmazások esetén működik.

A diagnosztikai port a .NET 5-ben hozzáadott futtatókörnyezeti funkció, amely lehetővé teszi a nyomkövetés indítását az alkalmazás indításakor. Ehhez dotnet-tracehasználhatja dotnet-trace collect -- <command> a fenti példákban leírt módon, vagy használhatja a --diagnostic-port lehetőséget.

Az alkalmazás gyermekfolyamatként való elindításának legegyszerűbb dotnet-trace <collect|monitor> -- <command> módja az alkalmazás indítási folyamatából való gyors nyomon követésének.

Ha azonban pontosabban szeretné szabályozni a nyomkövetés alatt álló alkalmazás élettartamát (például csak az első 10 percre figyeli az alkalmazást, és folytatja a végrehajtást), vagy ha a parancssori felület használatával kell kommunikálnia az alkalmazással, a beállítással --diagnostic-port szabályozhatja a figyelt célalkalmazást és dotnet-tracea .

  1. Az alábbi dotnet-trace parancs létrehoz egy elnevezett myport.sock diagnosztikai szoftvercsatornát, és várja meg a kapcsolatot.

    dotnet-trace collect --diagnostic-port myport.sock
    

    Output:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
    
  2. Egy külön konzolon indítsa el a célalkalmazást a kimeneti értékre dotnet-trace beállított környezeti változóvalDOTNET_DiagnosticPorts.

    export DOTNET_DiagnosticPorts=/home/user/myport.sock
    ./my-dotnet-app arg1 arg2
    

    Ennek ezután engedélyeznie dotnet-trace kell a nyomkövetés my-dotnet-appindítását:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=myport.sock
    Starting a counter session. Press Q to quit.
    

    Fontos

    Az alkalmazás dotnet run indítása problémás lehet, mert a dotnet parancssori felület számos olyan gyermekfolyamatot hozhat létre, amelyek nem az Ön alkalmazásai, és amelyekhez dotnet-trace az alkalmazás előtt csatlakozhatnak, így az alkalmazást futásidőben fel kell függeszteni. Javasoljuk, hogy közvetlenül használja az alkalmazás önálló verzióját, vagy indítsa dotnet exec el az alkalmazást.

A dotnet-trace-ből rögzített nyomkövetés megtekintése

Windows rendszeren a .nettrace-fájlokat a Visual Studióban vagy a PerfView-ban tekintheti meg elemzés céljából.

Linuxon a nyomkövetést úgy tekintheti meg, hogy a kimeneti formátumot a következőre speedscopemódosítjadotnet-trace. Módosítsa a kimeneti fájlformátumot a -f|--format beállítással. Választhat ( nettrace az alapértelmezett beállítás) és a speedscope. Ez a dotnet-trace beállítás -f speedscope létrehoz egy speedscope fájlt. Speedscope fájlokat a következő helyen nyithatja meg: https://www.speedscope.app.

A nem Windows-platformokon gyűjtött nyomkövetések esetében a nyomkövetési fájlt áthelyezheti egy Windows-gépre, és megtekintheti a Visual Studióban vagy a PerfView-ban.

Megjegyzés:

A .NET Core-futtatókörnyezet nyomkövetéseket hoz létre a nettrace formátumban. A nyomkövetéseket a rendszer a nyomkövetés befejezése után sebességmérővé alakítja (ha meg van adva). Mivel egyes átalakítások adatvesztést okozhatnak, az eredeti nettrace fájl megmarad a konvertált fájl mellett.

Számlálóértékek időbeli gyűjtéséhez használjon dotnet-trace-t

dotnet-trace Cna:

  • Alapszintű állapotmonitorozáshoz használható EventCounter a teljesítményérzékeny környezetekben. Például éles környezetben.
  • Gyűjtse össze a nyomkövetéseket, hogy ne kelljen valós időben megtekinteni őket.

A futtatókörnyezet teljesítményszámlálóinak értékeinek gyűjtéséhez például használja a következő parancsot:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1

Az előző parancs arra utasítja a futtatókörnyezet számlálóit, hogy másodpercenként egyszer jelentsenek az egyszerű állapotmonitorozás érdekében. A magasabb értékre (például 60) való lecseréléssel EventCounterIntervalSec=1 kisebb nyomkövetést lehet összegyűjteni a számlálóadatok kevésbé részletességével.

Az alábbi parancs az előzőnél nagyobb terhelést és nyomkövetési méretet csökkenti:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1,Microsoft-Windows-DotNETRuntime:0:1,Microsoft-DotNETCore-SampleProfiler:0:1

Az előző parancs letiltja a futtatókörnyezeti eseményeket és a felügyelt veremprofilozót.

Az .rsp fájl használata a hosszú parancsok beírásának elkerülése érdekében

Elindíthat dotnet-trace egy .rsp fájlt, amely tartalmazza az átadandó argumentumokat. Ez akkor lehet hasznos, ha olyan szolgáltatókat engedélyez, amelyek hosszadalmas argumentumokat várnak, vagy ha karaktereket csíkozó rendszerhéj-környezetet használnak.

A következő szolgáltató például nehézkes lehet, ha minden nyomkövetési alkalommal beír:

dotnet-trace collect --providers Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

Az előző példa emellett az argumentum részeként is szerepel " . Mivel az idézőjeleket nem minden rendszerhéj egyformán kezeli, különböző problémák léphetnek fel a különböző rendszerhéjak használatakor. A beírandó zsh parancs például eltér a következő parancstól cmd: .

Ahelyett, hogy minden alkalommal beírja ezt a szöveget, mentheti a következő szöveget egy úgynevezett myprofile.rspfájlba.

--providers
Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

A mentést myprofile.rspkövetően a következő paranccsal indíthatja el dotnet-trace ezt a konfigurációt:

dotnet-trace @myprofile.rsp

Kapcsolódó információk