Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel is van toepassing op: ✔️ dotnet-trace 9.0.625801 en latere versies
Installeren
Er zijn twee manieren om te downloaden en installeren dotnet-trace:
dotnet global tool:
Als u de nieuwste versie van het NuGet-pakket wilt installeren, gebruikt u de installatieopdracht van het
dotnet-tracedotnet-hulpprogramma:dotnet tool install --global dotnet-traceDirecte download:
Download het uitvoerbare hulpprogramma dat overeenkomt met uw platform:
Besturingssysteem Platvorm Ramen Linux x64 | | musl-x64 | musl-Arm64
Samenvatting
dotnet-trace [-h, --help] [--version] <command>
Beschrijving
Het dotnet-trace hulpprogramma:
- Is een platformoverschrijdend .NET Core-hulpprogramma.
- Hiermee kunt u .NET Core-traceringen van een actief proces zonder systeemeigen profiler verzamelen.
- Is gebaseerd op
EventPipede .NET Core-runtime. - Biedt dezelfde ervaring in Windows, Linux of macOS.
Opties
-h|--helpToont opdrachtregelhulp.
--versionGeeft de versie van het hulpprogramma dotnet-trace weer.
--durationHoe lang de tracering moet worden uitgevoerd.
--duration 00:00:00:05wordt deze gedurende 5 seconden uitgevoerd.
Opdracht
| Opdracht |
|---|
| dotnet-trace collect |
| dotnet-trace convert |
| dotnet-trace ps |
| dotnet-trace list-profiles |
| dotnet-trace-rapport |
dotnet-trace collect
Verzamelt een diagnostische tracering van een actief proces of start een onderliggend proces en traceert het (.NET 5 of hoger). Als u wilt dat het hulpprogramma een onderliggend proces uitvoert en deze traceert vanaf het opstarten, voegt u de opdracht Verzamelen toe -- .
Samenvatting
dotnet-trace collect [--buffersize <size>] [--clreventlevel <clreventlevel>] [--clrevents <clrevents>]
[--dsrouter <ios|ios-sim|android|android-emu>]
[--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>]
Opties
--buffersize <size>Hiermee stelt u de grootte van de buffer in het geheugen in megabytes in. Standaard 256 MB.
Notitie
Als het doelproces gebeurtenissen sneller verzendt dan ze naar de schijf kunnen worden geschreven, kan deze buffer overlopen en worden sommige gebeurtenissen verwijderd. U kunt dit probleem oplossen door de buffergrootte te vergroten of het aantal opgenomen gebeurtenissen te verminderen.
--clreventlevel <clreventlevel>Uitgebreidheid van CLR-gebeurtenissen die moeten worden verzonden. In de volgende tabel ziet u de beschikbare gebeurtenisniveaus.
Tekenreekswaarde Numerieke waarde logalways0critical1error2warning3informational4verbose5--clrevents <clrevents>Een lijst met CLR-runtimeprovidertrefwoorden om gescheiden door
+tekens in te schakelen. Dit is een eenvoudige toewijzing waarmee u gebeurtenistrefwoorden kunt opgeven via tekenreeksaliassen in plaats van hun hexe waarden. Vraagt bijvoorbeelddotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4dezelfde set gebeurtenissen aan alsdotnet-trace collect --clrevents gc+gchandle --clreventlevel informational. In de onderstaande tabel ziet u de lijst met beschikbare trefwoorden:Alias trefwoordtekenreeks Hexwaarde voor trefwoord gc0x1gchandle0x2fusion0x4loader0x8jit0x10ngen0x20startenumeration0x40endenumeration0x80security0x400appdomainresourcemanagement0x800jittracing0x1000interop0x2000contention0x4000exception0x8000threading0x10000jittedmethodiltonativemap0x20000overrideandsuppressngenevents0x40000type0x80000gcheapdump0x100000gcsampledobjectallocationhigh0x200000gcheapsurvivalandmovement0x400000gcheapcollect0x800000gcheapandtypenames0x1000000gcsampledobjectallocationlow0x2000000perftrack0x20000000stack0x40000000threadtransfer0x80000000debugger0x100000000monitoring0x200000000codesymbols0x400000000eventsource0x800000000compilation0x1000000000compilationdiagnostic0x2000000000methoddiagnostic0x4000000000typediagnostic0x8000000000waithandle0x40000000000Meer informatie over de CLR-provider vindt u in de referentiedocumentatie voor .NET Runtime-providers.
'--dsrouter {ios|ios-sim|android|android-emu}
Start dotnet-dsrouter en maakt er verbinding mee. Vereist dat dotnet-dsrouter is geïnstalleerd. Uitvoeren dotnet-dsrouter -h voor meer informatie.
--format {Chromium|NetTrace|Speedscope}Hiermee stelt u de uitvoerindeling voor de conversie van het traceringsbestand in. De standaardwaarde is
NetTrace.-n, --name <name>De naam van het proces waaruit de tracering moet worden verzameld.
Notitie
Voor Linux en macOS is voor het gebruik van deze optie de doeltoepassing vereist en
dotnet-tracemoet dezelfde omgevingsvariabeleTMPDIRworden gedeeld. Anders treedt er een time-out op voor de opdracht.--diagnostic-port <port-address[,(listen|connect)]>Hiermee stelt u de diagnostische poort in die wordt gebruikt om te communiceren met het proces dat moet worden getraceerd. dotnet-trace en de .NET-runtime binnen het doelproces moeten akkoord gaan met het poortadres, met één luisteren en de andere verbinding. dotnet-trace bepaalt automatisch de juiste poort bij het koppelen met behulp van de
--process-idof--nameopties, of bij het starten van een proces met behulp van de-- <command>optie. Het is meestal alleen nodig om de poort expliciet op te geven wanneer wordt gewacht op een proces dat in de toekomst begint of communiceert met een proces dat wordt uitgevoerd in een container die geen deel uitmaakt van de naamruimte van het huidige proces.Dit
port-addressverschilt per besturingssysteem:- Linux en macOS: een pad naar een Unix-domeinsocket zoals
/foo/tool1.socket. - Windows : een pad naar een benoemde pijp, zoals
\\.\pipe\my_diag_port1. - Android, iOS en tvOS - een IP:port zoals
127.0.0.1:9000.
Luistert standaard
dotnet-tracenaar het opgegeven adres. U kunt in plaats daarvan aanvragendotnet-traceom verbinding te maken door het adres toe te,connectvoegen. Maakt bijvoorbeeld--diagnostic-port /foo/tool1.socket,connectverbinding met een .NET-runtimeproces dat luistert naar de/foo/tool1.socketUnix-domeinsocket.Zie Diagnostische poort gebruiken om een tracering van het opstarten van apps te verzamelen voor informatie over het gebruik van deze optie.
- Linux en macOS: een pad naar een Unix-domeinsocket zoals
--duration <time-to-run>De tijd waarop de tracering moet worden uitgevoerd. Gebruik de
dd:hh:mm:ssindeling. U kunt deze bijvoorbeeld00:00:00:055 seconden uitvoeren.-o|--output <trace-file-path>Het uitvoerpad voor de verzamelde traceringsgegevens. Als deze niet is opgegeven, wordt deze standaard ingesteld op
<appname>_<yyyyMMdd>_<HHmmss>.nettracebijvoorbeeld 'myapp_20210315_111514.nettrace'.-p|--process-id <PID>De proces-id waaruit de tracering moet worden verzameld.
Notitie
Voor Linux en macOS is voor het gebruik van deze optie de doeltoepassing vereist en
dotnet-tracemoet dezelfde omgevingsvariabeleTMPDIRworden gedeeld. Anders treedt er een time-out op voor de opdracht.--profile <profile-name>Een benoemde vooraf gedefinieerde set providerconfiguraties waarmee algemene traceringsscenario's beknopt kunnen worden opgegeven. De volgende profielen zijn beschikbaar:
| Profiel | Beschrijving |
|---|---|
cpu-sampling |
Handig voor het bijhouden van CPU-gebruik en algemene .NET-runtimegegevens. Dit is de standaardoptie als er geen profiel of providers zijn opgegeven. |
gc-verbose |
Houdt GC-verzamelingen en voorbeelden van objecttoewijzingen bij. |
gc-collect |
Houdt GC-verzamelingen alleen bij zeer lage overhead bij. |
--providers <list-of-comma-separated-providers>Een door komma's gescheiden lijst met
EventPipeproviders die moeten worden ingeschakeld. Deze providers vullen alle providers aan die worden geïmpliceerd door--profile <profile-name>. Als er inconsistentie is voor een bepaalde provider, heeft deze configuratie voorrang op de impliciete configuratie van het profiel.Deze lijst met providers heeft de volgende vorm:
Provider[,Provider]-
Provideris in de vorm:KnownProviderName[:Flags[:Level][:KeyValueArgs]]. -
KeyValueArgsis in de vorm:[key1=value1][;key2=value2].
Raadpleeg bekende gebeurtenisproviders voor meer informatie over enkele bekende providers in .NET.
-- <command>(voor doeltoepassingen met .NET 5 of hoger)Na de configuratieparameters van de verzameling kan de gebruiker worden toegevoegd
--, gevolgd door een opdracht om een .NET-toepassing te starten met ten minste een runtime van 5.0. Dit kan handig zijn bij het diagnosticeren van problemen die vroeg in het proces optreden, zoals opstartprestaties of assemblylaadprogramma's en binderfouten.Notitie
Met deze optie wordt het eerste .NET-proces bewaakt dat met het hulpprogramma communiceert. Dit betekent dat als uw opdracht meerdere .NET-toepassingen start, alleen de eerste app wordt verzameld. Daarom is het raadzaam deze optie te gebruiken voor zelfstandige toepassingen of het gebruik van de
dotnet exec <app.dll>optie.--show-child-ioToont de invoer- en uitvoerstromen van een gestart onderliggend proces in de huidige console.
--resume-runtimeRuntime hervatten zodra de sessie is geïnitialiseerd, is de standaardwaarde waar. Schakel het hervatten van runtime uit met behulp van --resume-runtime:false.
--stopping-event-provider-nameEen tekenreeks die als zodanig wordt geparseerd, waardoor de tracering wordt gestopt bij het bereiken van een gebeurtenis met de overeenkomende providernaam. Voor een specifiekere stoppende gebeurtenis moet u ook opgeven
--stopping-event-event-nameen/of--stopping-event-payload-filter. Als u bijvoorbeeld--stopping-event-provider-name Microsoft-Windows-DotNETRuntimede tracering wilt stoppen bij het bereiken van de eerste gebeurtenis die door deMicrosoft-Windows-DotNETRuntimegebeurtenisprovider is verzonden.--stopping-event-event-nameEen tekenreeks die als zodanig wordt geparseerd, waardoor de tracering wordt gestopt bij het bereiken van een gebeurtenis met de overeenkomende gebeurtenisnaam. Moet
--stopping-event-provider-nameworden ingesteld. Voor een specifiekere stopbeurtenis moet u ook opgeven--stopping-event-payload-filter. Als u bijvoorbeeld--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStartedde tracering wilt stoppen bij het bereiken van de eersteMethod/JittingStartedgebeurtenis die door deMicrosoft-Windows-DotNETRuntimegebeurtenisprovider is verzonden.--stopping-event-payload-filterEen tekenreeks, geparseerd als [payload_field_name]:[payload_field_value] paren gescheiden door komma's, die de tracering stoppen bij het raken van een gebeurtenis met alle opgegeven nettoladingparen. Vereist
--stopping-event-provider-nameen--stopping-event-event-namemoet worden ingesteld. Als u bijvoorbeeld--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClickde tracering wilt stoppen bij de eersteMethod/JittingStartedgebeurtenis voor de methodeOnButtonClickin deProgramnaamruimte die door deMicrosoft-Windows-DotNETRuntimegebeurtenisprovider wordt verzonden.
Notitie
- Het stoppen van de tracering kan lang (tot minuten) duren voor grote toepassingen. De runtime moet verzenden via de typecache voor alle beheerde code die in de trace is vastgelegd.
- Als u een tracering wilt verzamelen met behulp
dotnet-tracevan, moet deze worden uitgevoerd als dezelfde gebruiker als de gebruiker die het doelproces uitvoert of als hoofdmap. Anders kan het hulpprogramma geen verbinding maken met het doelproces.
- Als u een niet-verwerkte uitzondering ondervindt tijdens het uitvoeren
dotnet-trace collect, resulteert dit in een onvolledige tracering. Als u de hoofdoorzaak van de uitzondering vindt, gaat u naar Dumps verzamelen bij crash. Als gevolg van de niet-verwerkte uitzondering wordt de tracering afgekapt wanneer de runtime wordt afgesloten om ander ongewenst gedrag te voorkomen, zoals vastlopen of beschadiging van gegevens. Hoewel de tracering onvolledig is, kunt u deze nog steeds openen om te zien wat er is gebeurd tot de fout. Er ontbreken echter Rundown-gegevens (dit gebeurt aan het einde van een tracering), zodat stacks mogelijk onopgeloste zijn (afhankelijk van de providers die zijn ingeschakeld). Open de trace door PerfView uit te voeren met de/ContinueOnErrorvlag op de opdrachtregel. De logboeken bevatten ook de locatie waar de uitzondering is geactiveerd.
- Wanneer u een stopgebeurtenis opgeeft via de
--stopping-event-*opties, omdat de EventStream asynchroon wordt geparseerd, zijn er enkele gebeurtenissen die passeren tussen het moment dat een traceringsgebeurtenis die overeenkomt met de opgegeven opties voor stopgebeurtenissen wordt geparseerd en de EventPipeSession wordt gestopt.
dotnet-trace convert
Converteert nettrace traceringen naar alternatieve indelingen voor gebruik met alternatieve hulpprogramma's voor traceringsanalyse.
Samenvatting
dotnet-trace convert [<input-filename>] [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [-o|--output <output-filename>]
Argumenten
<input-filename>Invoertraceringsbestand dat moet worden geconverteerd. Standaard ingesteld op trace.nettrace.
Opties
--format <Chromium|NetTrace|Speedscope>Hiermee stelt u de uitvoerindeling voor de conversie van het traceringsbestand in.
-o|--output <output-filename>Uitvoerbestand. De extensie van de doelindeling wordt toegevoegd.
Notitie
Het converteren van nettrace bestanden naar chromium of speedscope bestanden kan niet ongedaan worden.
speedscope en chromium bestanden hebben niet alle informatie die nodig is om bestanden te reconstrueren nettrace . De convert opdracht behoudt echter het oorspronkelijke nettrace bestand, dus verwijder dit bestand niet als u het in de toekomst wilt openen.
dotnet-trace ps
Geeft een lijst weer van de dotnet-processen waaruit traceringen kunnen worden verzameld.
dotnet-trace 6.0.320703 en hoger, geeft ook de opdrachtregelargumenten weer waarmee elk proces is gestart, indien beschikbaar.
Notitie
Als u volledige informatie wilt over geïnventariseerd 64-bits processen, moet u een 64-bits versie van het dotnet-trace hulpprogramma gebruiken.
Samenvatting
dotnet-trace ps [-h|--help]
Opmerking
Stel dat u een langlopende app start met behulp van de opdracht dotnet run --configuration Release. In een ander venster voert u de dotnet-trace ps opdracht uit. De uitvoer die u ziet, is als volgt. De opdrachtregelargumenten, indien beschikbaar, worden weergegeven in dotnet-trace versie 6.0.320703 en hoger.
> 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
Toont vooraf gebouwde traceringsprofielen met een beschrijving van welke providers en filters zich in elk profiel bevinden.
Samenvatting
dotnet-trace list-profiles [-h|--help]
dotnet-trace-rapport
Hiermee maakt u een rapport in stdout op basis van een eerder gegenereerde trace.
Samenvatting
dotnet-trace report [-h|--help] <tracefile> [command]
Argumenten
<tracefile>Het bestandspad voor de trace die wordt geanalyseerd.
Opdracht
dotnet-trace rapport topN
Hiermee vindt u de belangrijkste N-methoden die op de callstack het langst zijn.
Samenvatting
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Opties
-n|--number <n>
Geeft de belangrijkste N-methoden op de callstack.
--inclusive
Voer de belangrijkste N-methoden uit op basis van inclusieve tijd. Als dit niet is opgegeven, wordt de exclusieve tijd standaard gebruikt.
-v|--verbose
Voer de parameters van elke methode volledig uit. Als dit niet is opgegeven, worden parameters afgekapt.
Een tracering verzamelen met dotnet-trace
Traceringen verzamelen met behulp van dotnet-trace:
Haal de proces-id (PID) van de .NET Core-toepassing op om traceringen van te verzamelen.
- In Windows kunt u bijvoorbeeld Taakbeheer of de
tasklistopdracht gebruiken. - In Linux bijvoorbeeld de
psopdracht. - dotnet-trace ps
- In Windows kunt u bijvoorbeeld Taakbeheer of de
Voer de volgende opdracht uit:
dotnet-trace collect --process-id <PID>Met de voorgaande opdracht wordt uitvoer gegenereerd die vergelijkbaar is met de volgende:
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)Stop de verzameling door op de
<Enter>toets te drukken.dotnet-tracede logboekregistratie van gebeurtenissen naar het trace.nettrace-bestand wordt voltooid.
Een onderliggende toepassing starten en een tracering verzamelen bij het opstarten met behulp van dotnet-trace
Soms kan het handig zijn om een tracering van een proces te verzamelen van het opstarten. Voor apps met .NET 5 of hoger is het mogelijk om dit te doen met behulp van dotnet-trace.
Hiermee start hello.exe u met arg1 en arg2 als opdrachtregelargumenten en verzamelt u een tracering vanaf het opstarten van de runtime:
dotnet-trace collect -- hello.exe arg1 arg2
Met de voorgaande opdracht wordt uitvoer gegenereerd die vergelijkbaar is met de volgende:
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...
U kunt het verzamelen van de trace stoppen door op of <Enter> in de toets te drukken<Ctrl + C>. Als u dit doet, wordt ook afgesloten hello.exe.
Notitie
Als u hello.exe via dotnet-trace start, wordt de invoer/uitvoer omgeleid en kunt u er niet standaard mee werken op de console. Gebruik de --show-child-io schakeloptie om te communiceren met de stdin/stdout.
Als u het hulpprogramma afsluit via Ctrl+C of SIGTERM, worden zowel het hulpprogramma als het onderliggende proces veilig beëindigd.
Als het onderliggende proces wordt afgesloten voordat het hulpprogramma wordt afgesloten, wordt het hulpprogramma ook afgesloten en moet de trace veilig zichtbaar zijn.
Diagnostische poort gebruiken om een tracering te verzamelen van het opstarten van de app
Diagnostische poort is een runtimefunctie die is toegevoegd in .NET 5 waarmee u tracering kunt starten vanaf het opstarten van de app. Als u dit wilt doen, dotnet-tracekunt u deze gebruiken dotnet-trace collect -- <command> zoals beschreven in de bovenstaande voorbeelden of de --diagnostic-port optie gebruiken.
Het gebruik dotnet-trace <collect|monitor> -- <command> om de toepassing als onderliggend proces te starten, is de eenvoudigste manier om de toepassing snel te traceren vanaf het opstarten.
Als u echter een nauwkeurigere controle wilt krijgen over de levensduur van de app die wordt getraceerd (bijvoorbeeld de app gedurende de eerste 10 minuten bewaken en doorgaan met uitvoeren) of als u met de CLI wilt communiceren met de app, kunt u met behulp van --diagnostic-port de optie de doel-app beheren die wordt bewaakt en dotnet-trace.
Met de onderstaande opdracht maakt
dotnet-traceu een diagnostische socket met de naammyport.socken wacht u op een verbinding.dotnet-trace collect --diagnostic-port myport.sockUitvoer:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sockStart in een afzonderlijke console de doeltoepassing met de omgevingsvariabele
DOTNET_DiagnosticPortsdie is ingesteld op de waarde in dedotnet-traceuitvoer.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2Dit moet vervolgens inschakelen
dotnet-traceom traceringmy-dotnet-appte starten: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.Belangrijk
Het starten van uw app met
dotnet runkan problematisch zijn omdat de dotnet CLI mogelijk veel onderliggende processen veroorzaakt die niet uw app zijn en waarmee ze verbinding kunnen makendotnet-tracevoordat uw app wordt uitgevoerd, waardoor uw app tijdens runtime wordt onderbroken. Het wordt aanbevolen om rechtstreeks een zelfstandige versie van de app te gebruikendotnet execof om de toepassing te starten.
De tracering weergeven die is vastgelegd vanuit dotnet-trace
In Windows kunt u .nettrace-bestanden weergeven in Visual Studio of PerfView voor analyse.
In Linux kunt u de tracering bekijken door de uitvoerindeling van dotnet-trace te wijzigen in speedscope. Wijzig de indeling van het uitvoerbestand met behulp van de -f|--format optie. U kunt kiezen tussen nettrace (de standaardoptie) en speedscope. Met de optie -f speedscope wordt dotnet-trace een speedscope bestand geproduceerd.
Speedscope bestanden kunnen worden geopend op https://www.speedscope.app.
Voor traceringen die zijn verzameld op niet-Windows-platforms, kunt u het traceringsbestand ook verplaatsen naar een Windows-computer en het weergeven in Visual Studio of PerfView.
Notitie
De .NET Core-runtime genereert traceringen in de nettrace indeling. De traceringen worden geconverteerd naar speedscope (indien opgegeven) nadat de tracering is voltooid. Omdat sommige conversies kunnen leiden tot verlies van gegevens, blijft het oorspronkelijke nettrace bestand behouden naast het geconverteerde bestand.
.rsp-bestand gebruiken om te voorkomen dat lange opdrachten worden getypt
U kunt starten dotnet-trace met een .rsp bestand dat de argumenten bevat die moeten worden doorgegeven. Dit kan handig zijn bij het inschakelen van providers die lange argumenten verwachten of wanneer u een shell-omgeving gebruikt waarmee tekens worden gestript.
De volgende provider kan bijvoorbeeld lastig zijn om elke keer dat u wilt traceren uit te voeren:
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
Daarnaast bevat " het vorige voorbeeld als onderdeel van het argument. Omdat aanhalingstekens niet evenzeer door elke shell worden verwerkt, kunnen er verschillende problemen optreden bij het gebruik van verschillende shells. De opdracht die u wilt invoeren zsh , is bijvoorbeeld anders dan de opdracht in cmd.
In plaats van dit elke keer te typen, kunt u de volgende tekst opslaan in een bestand met de naam myprofile.rsp.
--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
Zodra u het bestand hebt opgeslagen myprofile.rsp, kunt u met deze configuratie starten dotnet-trace met behulp van de volgende opdracht:
dotnet-trace @myprofile.rsp