dotnet-trace performance analysis utility (narzędzie do analizy wydajności dotnet-trace)
Ten artykuł dotyczy: ✔️ dotnet-trace
3.0.47001 i nowszych wersji
Instalowanie
Istnieją dwa sposoby pobierania i instalowania dotnet-trace
programu :
dotnet global tool:
Aby zainstalować najnowszą wersję
dotnet-trace
pakietu NuGet, użyj polecenia dotnet tool install :dotnet tool install --global dotnet-trace
Pobieranie bezpośrednie:
Pobierz plik wykonywalny narzędzia pasujący do platformy:
System operacyjny Platforma Windows x86 | x64 | Arm | Arm-x64 Linux x64 Arm | Arm64 | | musl-x64 musl-Arm64 |
Streszczenie
dotnet-trace [-h, --help] [--version] <command>
opis
Narzędzie dotnet-trace
:
- To międzyplatformowe narzędzie .NET Core.
- Umożliwia zbieranie śladów platformy .NET Core działającego procesu bez natywnego profilera.
- Jest oparty na
EventPipe
środowisku uruchomieniowym platformy .NET Core. - Zapewnia to samo środowisko w systemach Windows, Linux lub macOS.
Opcje
-h|--help
Pokazuje pomoc wiersza polecenia.
--version
Wyświetla wersję narzędzia dotnet-trace.
--duration
Jak długo należy uruchomić ślad.
--duration 00:00:00:05
uruchomi go przez 5 sekund.
Polecenia
Polecenie |
---|
dotnet-trace collect |
dotnet-trace convert |
dotnet-trace ps |
dotnet-trace list-profiles |
dotnet-trace report |
dotnet-trace collect
Zbiera ślad diagnostyczny z uruchomionego procesu lub uruchamia proces podrzędny i śledzi go (.NET 5 lub nowszy). Aby narzędzie uruchamiało proces podrzędny i śledziło go z jego uruchamiania, dołącz --
go do polecenia collect.
Streszczenie
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>]
Opcje
--buffersize <size>
Ustawia rozmiar buforu w pamięci w megabajtach. Domyślnie 256 MB.
Uwaga
Jeśli proces docelowy emituje zdarzenia szybciej niż można je zapisać na dysku, ten bufor może przepełnić się i niektóre zdarzenia zostaną porzucone. Ten problem można rozwiązać, zwiększając rozmiar buforu lub zmniejszając liczbę rejestrowanych zdarzeń.
--clreventlevel <clreventlevel>
Szczegółowość zdarzeń CLR, które mają być emitowane. W poniższej tabeli przedstawiono dostępne poziomy zdarzeń.
Wartość ciągu Wartość liczbowa logalways
0
critical
1
error
2
warning
3
informational
4
verbose
5
--clrevents <clrevents>
Lista słów kluczowych dostawcy środowiska uruchomieniowego CLR w celu włączenia rozdzielonych znakami
+
. Jest to proste mapowanie, które umożliwia określenie słów kluczowych zdarzeń za pośrednictwem aliasów ciągów, a nie ich wartości szesnastkowych. Na przykładdotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4
żąda tego samego zestawu zdarzeń codotnet-trace collect --clrevents gc+gchandle --clreventlevel informational
. W poniższej tabeli przedstawiono listę dostępnych słów kluczowych:Alias ciągu słowa kluczowego Wartość szesnastkowy słowa kluczowego 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
Więcej szczegółowych informacji na temat dostawcy CLR można uzyskać w dokumentacji referencyjnej dostawcy środowiska uruchomieniowego platformy .NET.
--format {Chromium|NetTrace|Speedscope}
Ustawia format danych wyjściowych konwersji pliku śledzenia. Wartość domyślna to
NetTrace
.-n, --name <name>
Nazwa procesu do zbierania śladu.
--diagnostic-port <path-to-port>
Nazwa portu diagnostycznego do utworzenia. Zobacz Używanie portu diagnostycznego do zbierania śladu z uruchamiania aplikacji, aby dowiedzieć się, jak używać tej opcji do zbierania śladu po uruchomieniu aplikacji.
--duration <time-to-run>
Czas uruchomienia śledzenia.
dd:hh:mm:ss
Użyj formatu. Na przykład00:00:00:05
uruchomi go przez 5 sekund.-o|--output <trace-file-path>
Ścieżka wyjściowa dla zebranych danych śledzenia. Jeśli nie zostanie określona, zostanie ustawiona wartość
<appname>_<yyyyMMdd>_<HHmmss>.nettrace
domyślna , np. "myapp_20210315_111514.nettrace".-p|--process-id <PID>
Identyfikator procesu do zbierania śladu.
--profile <profile-name>
Nazwany wstępnie zdefiniowany zestaw konfiguracji dostawcy, który umożliwia zwięzłe określenie typowych scenariuszy śledzenia. Dostępne są następujące profile:
Profil | opis |
---|---|
cpu-sampling |
Przydatne do śledzenia użycia procesora CPU i ogólnych informacji o środowisku uruchomieniowym platformy .NET. Jest to opcja domyślna, jeśli nie określono żadnego profilu lub dostawców. |
gc-verbose |
Śledzi kolekcje GC i przykłady alokacji obiektów. |
gc-collect |
Śledzi kolekcje GC tylko przy bardzo niskim narzucie. |
--providers <list-of-comma-separated-providers>
Rozdzielona przecinkami lista
EventPipe
dostawców do włączenia. Ci dostawcy uzupełniają wszystkich dostawców sugerowanych przez--profile <profile-name>
usługę . Jeśli istnieje niespójność dla określonego dostawcy, ta konfiguracja ma pierwszeństwo przed niejawną konfiguracją z profilu.Ta lista dostawców ma postać:
Provider[,Provider]
Provider
ma postać:KnownProviderName[:Flags[:Level][:KeyValueArgs]]
.KeyValueArgs
ma postać:[key1=value1][;key2=value2]
.
Aby dowiedzieć się więcej na temat niektórych znanych dostawców na platformie .NET, zapoznaj się z tematem Dobrze znani dostawcy zdarzeń.
-- <command>
(dla aplikacji docelowych z systemem .NET 5 lub nowszym)Po parametrach konfiguracji kolekcji użytkownik może dołączyć
--
następujące polecenie, aby uruchomić aplikację platformy .NET z co najmniej środowiskiem uruchomieniowym 5.0. Może to być przydatne podczas diagnozowania problemów występujących na wczesnym etapie procesu, takich jak problem z wydajnością uruchamiania lub błędy modułu ładującego zestawów i binder.Uwaga
Użycie tej opcji monitoruje pierwszy proces platformy .NET, który komunikuje się z powrotem do narzędzia, co oznacza, że jeśli polecenie uruchamia wiele aplikacji platformy .NET, będzie zbierać tylko pierwszą aplikację. W związku z tym zaleca się użycie tej opcji w aplikacjach samodzielnie lub przy użyciu
dotnet exec <app.dll>
opcji .--show-child-io
Przedstawia strumienie wejściowe i wyjściowe uruchomionego procesu podrzędnego w bieżącej konsoli.
--resume-runtime
Wznów środowisko uruchomieniowe po zainicjowaniu sesji, domyślnie ma wartość true. Wyłącz wznawianie środowiska uruchomieniowego przy użyciu polecenia --resume-runtime:false.
--stopping-event-provider-name
Ciąg, analizowany tak, jak to jest, który zatrzyma śledzenie po osiągnięciu zdarzenia z zgodną nazwą dostawcy. W przypadku bardziej szczegółowego zdarzenia zatrzymania podaj i
--stopping-event-event-name
/lub--stopping-event-payload-filter
. np.--stopping-event-provider-name Microsoft-Windows-DotNETRuntime
zatrzymać śledzenie po osiągnięciu pierwszego zdarzenia emitowanego przez dostawcę zdarzeńMicrosoft-Windows-DotNETRuntime
.--stopping-event-event-name
Ciąg, analizowany w stanie takim, w jakim jest, spowoduje zatrzymanie śledzenia po osiągnięciu zdarzenia z pasującą nazwą zdarzenia. Wymaga
--stopping-event-provider-name
ustawienia. Aby uzyskać bardziej szczegółowe zdarzenie zatrzymania, dodatkowo podaj wartość--stopping-event-payload-filter
. np.--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted
zatrzymać śledzenie po osiągnięciu pierwszegoMethod/JittingStarted
zdarzenia emitowanego przez dostawcę zdarzeńMicrosoft-Windows-DotNETRuntime
.--stopping-event-payload-filter
Ciąg, analizowany jako [payload_field_name]:[payload_field_value] par oddzielone przecinkami, które zatrzymają śledzenie po osiągnięciu zdarzenia zawierającego wszystkie określone pary ładunków. Wymaga
--stopping-event-provider-name
i--stopping-event-event-name
należy ustawić. Np.--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick
zatrzymać śledzenie po pierwszymMethod/JittingStarted
zdarzeniu metodyOnButtonClick
wProgram
przestrzeni nazw emitowanych przez dostawcęMicrosoft-Windows-DotNETRuntime
zdarzeń.
Uwaga
- Zatrzymanie śledzenia może potrwać długo (do minut) w przypadku dużych aplikacji. Środowisko uruchomieniowe musi wysłać pamięć podręczną typu dla całego kodu zarządzanego przechwyconego w śladzie.
- W systemach Linux i macOS to polecenie oczekuje aplikacji docelowej i
dotnet-trace
będzie współużytkować tę samąTMPDIR
zmienną środowiskową. W przeciwnym razie upłynął limit czasu polecenia.
- Aby zebrać dane śledzenia przy użyciu polecenia
dotnet-trace
, należy uruchomić go jako ten sam użytkownik, co użytkownik, który uruchamia proces docelowy lub jako główny. W przeciwnym razie narzędzie nie może nawiązać połączenia z procesem docelowym.
- Jeśli podczas uruchamiania
dotnet-trace collect
wystąpi nieobsługiwany wyjątek , spowoduje to niekompletne śledzenie. Jeśli znalezienie głównej przyczyny wyjątku jest twoim priorytetem, przejdź do sekcji Zbieranie zrzutów w przypadku awarii. W wyniku nieobsługiwanego wyjątku ślad jest obcięty, gdy środowisko uruchomieniowe zostanie zamknięte, aby zapobiec inne niepożądanemu zachowaniu, takie jak zawieszenie lub uszkodzenie danych. Mimo że ślad jest niekompletny, nadal można go otworzyć, aby zobaczyć, co się stało, co doprowadziło do awarii. Jednak brakuje informacji rundown (dzieje się to na końcu śledzenia), więc stosy mogą być nierozwiązane (w zależności od tego, którzy dostawcy zostali włączeni). Otwórz ślad, wykonując narzędzie PerfView z flagą/ContinueOnError
w wierszu polecenia. Dzienniki będą również zawierać lokalizację, w ramach którego został wyzwolony wyjątek.
- Podczas określania zdarzenia zatrzymania za pośrednictwem
--stopping-event-*
opcji, ponieważ strumień zdarzeń jest analizowany asynchronicznie, między czasem zdarzenie śledzenia zgodne z określonymi opcjami zdarzenia zatrzymania jest analizowane, a zdarzenie EventPipeSession zostanie zatrzymane.
dotnet-trace convert
Konwertuje nettrace
ślady na alternatywne formaty do użycia z alternatywnymi narzędziami do analizy śledzenia.
Streszczenie
dotnet-trace convert [<input-filename>] [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [-o|--output <output-filename>]
Argumenty
<input-filename>
Plik śledzenia danych wejściowych do przekonwertowania. Wartość domyślna to trace.nettrace.
Opcje
--format <Chromium|NetTrace|Speedscope>
Ustawia format danych wyjściowych konwersji pliku śledzenia.
-o|--output <output-filename>
Nazwa pliku wyjściowego. Zostanie dodane rozszerzenie formatu docelowego.
Uwaga
Konwertowanie nettrace
plików na chromium
pliki lub speedscope
jest nieodwracalne. speedscope
pliki i chromium
nie mają wszystkich informacji niezbędnych do odtworzenia nettrace
plików. convert
Jednak polecenie zachowuje oryginalny nettrace
plik, więc nie usuwaj tego pliku, jeśli planujesz go otworzyć w przyszłości.
dotnet-trace ps
Wyświetla listę procesów dotnet, z których można zbierać ślady.
dotnet-trace
6.0.320703 i nowsze, wyświetla również argumenty wiersza polecenia, z którymi uruchomiono każdy proces, jeśli jest dostępny.
Uwaga
Aby uzyskać pełne informacje na temat wyliczanych procesów 64-bitowych, należy użyć 64-bitowej wersji dotnet-trace
narzędzia.
Streszczenie
dotnet-trace ps [-h|--help]
Przykład
Załóżmy, że uruchamiasz długotrwałą aplikację przy użyciu polecenia dotnet run --configuration Release
. W innym oknie uruchomisz dotnet-trace ps
polecenie . Dane wyjściowe, które zobaczysz, są następujące. Argumenty wiersza polecenia, jeśli są dostępne, są wyświetlane w dotnet-trace
wersji 6.0.320703 lub nowszej.
> 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
Wyświetla listę wstępnie utworzonych profilów śledzenia z opisem dostawców i filtrów w każdym profilu.
Streszczenie
dotnet-trace list-profiles [-h|--help]
dotnet-trace report
Tworzy raport na podstawie wcześniej wygenerowanego śladu.
Streszczenie
dotnet-trace report [-h|--help] <tracefile> [command]
Argumenty
<tracefile>
Ścieżka pliku do analizowanego śledzenia.
Polecenia
dotnet-trace report topN
Znajduje n najlepszych metod, które były na stosie wywołań najdłużej.
Streszczenie
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Opcje
-n|--number <n>
Udostępnia n najlepszych metod na stosie wywołań.
--inclusive
Wyprowadź pierwsze N metod na podstawie czasu inkluzywnego . Jeśli nie zostanie określony, czas wyłączny jest używany domyślnie.
-v|--verbose
Wyprowadź pełne parametry każdej metody. Jeśli nie zostanie określony, parametry zostaną obcięte.
Zbieranie śladu za pomocą polecenia dotnet-trace
Aby zebrać ślady przy użyciu polecenia dotnet-trace
:
Pobierz identyfikator procesu (PID) aplikacji .NET Core w celu zbierania śladów.
- W systemie Windows można użyć Menedżera zadań lub
tasklist
polecenia, na przykład. - Na przykład
ps
w systemie Linux polecenie . - dotnet-trace ps
- W systemie Windows można użyć Menedżera zadań lub
Uruchom następujące polecenie:
dotnet-trace collect --process-id <PID>
Poprzednie polecenie generuje dane wyjściowe podobne do następujących:
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)
Zatrzymaj zbieranie, naciskając
<Enter>
.dotnet-trace
spowoduje zakończenie rejestrowania zdarzeń do pliku trace.nettrace .
Uruchamianie aplikacji podrzędnej i zbieranie śladu z jego uruchamiania przy użyciu polecenia dotnet-trace
Czasami przydatne może być zebranie śladu procesu od jego uruchomienia. W przypadku aplikacji z systemem .NET 5 lub nowszym można to zrobić przy użyciu polecenia dotnet-trace.
Spowoduje to uruchomienie hello.exe
arg1
polecenia i arg2
jako argumentów wiersza polecenia i zebranie śladu z uruchomienia środowiska uruchomieniowego:
dotnet-trace collect -- hello.exe arg1 arg2
Poprzednie polecenie generuje dane wyjściowe podobne do następujących:
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...
Zbieranie śladu można zatrzymać, naciskając <Enter>
lub <Ctrl + C>
. Spowoduje to również zakończenie hello.exe
działania .
Uwaga
hello.exe
Uruchomienie za pomocą polecenia dotnet-trace spowoduje przekierowanie jego danych wejściowych/wyjściowych i domyślnie nie będzie można z nią korzystać w konsoli. Użyj przełącznika, aby wchodzić w interakcję --show-child-io
z elementem stdin/stdout.
Zamknięcie narzędzia za pomocą CTRL+C lub SIGTERM bezpiecznie zakończy zarówno narzędzie, jak i proces podrzędny.
Jeśli proces podrzędny zakończy się przed narzędziem, narzędzie zakończy działanie, a ślad powinien być bezpiecznie wyświetlany.
Używanie portu diagnostycznego do zbierania śladu z uruchamiania aplikacji
Port diagnostyczny to funkcja środowiska uruchomieniowego dodana na platformie .NET 5, która umożliwia rozpoczęcie śledzenia od uruchamiania aplikacji. Aby to zrobić, dotnet-trace
możesz użyć metody zgodnie z dotnet-trace collect -- <command>
opisem w powyższych przykładach lub użyć --diagnostic-port
opcji .
Użycie dotnet-trace <collect|monitor> -- <command>
polecenia w celu uruchomienia aplikacji jako procesu podrzędnego jest najprostszym sposobem szybkiego śledzenia aplikacji od jej uruchomienia.
Jeśli jednak chcesz uzyskać dokładnszą kontrolę nad okresem istnienia śledzonej aplikacji (na przykład monitorować aplikację tylko przez pierwsze 10 minut i kontynuować wykonywanie) lub jeśli musisz wchodzić w interakcję z aplikacją przy użyciu interfejsu wiersza polecenia, za pomocą --diagnostic-port
opcji możesz kontrolować zarówno monitorowaną aplikację docelową, jak i dotnet-trace
.
Poniższe polecenie powoduje
dotnet-trace
utworzenie gniazda diagnostycznego o nazwiemyport.sock
i oczekiwanie na połączenie.dotnet-trace collect --diagnostic-port myport.sock
Wyjście:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
W oddzielnej konsoli uruchom aplikację docelową ze zmienną środowiskową
DOTNET_DiagnosticPorts
ustawioną na wartość w danych wyjściowychdotnet-trace
.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2
Powinno to następnie umożliwić
dotnet-trace
rozpoczęcie śledzeniamy-dotnet-app
: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.
Ważne
Uruchomienie aplikacji
dotnet run
za pomocą polecenia może być problematyczne, ponieważ interfejs wiersza polecenia dotnet może zduplikować wiele procesów podrzędnych, które nie są Twoją aplikacją, i mogą łączyć się zdotnet-trace
nią przed aplikacją, pozostawiając aplikację do zawieszenia w czasie wykonywania. Zaleca się bezpośrednie użycie samodzielnej wersji aplikacji lub użyciedotnet exec
jej do uruchamiania aplikacji.
Wyświetlanie śladu przechwyconego z pliku dotnet-trace
W systemie Windows można wyświetlać pliki .nettrace w programie Visual Studio lub PerfView na potrzeby analizy.
W systemie Linux możesz wyświetlić ślad, zmieniając format danych wyjściowych dotnet-trace
na speedscope
. Zmień format pliku wyjściowego -f|--format
przy użyciu opcji . Możesz wybrać między nettrace
(opcją domyślną) i speedscope
. Opcja -f speedscope
spowoduje dotnet-trace
utworzenie speedscope
pliku. Speedscope
pliki można otwierać pod adresem https://www.speedscope.app.
W przypadku śladów zebranych na platformach innych niż Windows można również przenieść plik śledzenia na maszynę z systemem Windows i wyświetlić go w programie Visual Studio lub PerfView.
Uwaga
Środowisko uruchomieniowe platformy .NET Core generuje ślady w nettrace
formacie . Ślady są konwertowane na speedscope (jeśli określono) po zakończeniu śledzenia. Ponieważ niektóre konwersje mogą spowodować utratę danych, oryginalny nettrace
plik jest zachowywany obok przekonwertowanego pliku.
Użyj pliku rsp, aby uniknąć wpisywania długich poleceń
Możesz uruchomić dotnet-trace
plik .rsp
zawierający argumenty do przekazania. Może to być przydatne podczas włączania dostawców, którzy oczekują długich argumentów lub w przypadku używania środowiska powłoki, które usuwa znaki.
Na przykład następujący dostawca może być uciążliwy do wpisywania za każdym razem, gdy chcesz śledzić:
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
Ponadto poprzedni przykład zawiera "
się jako część argumentu. Ponieważ cudzysłowy nie są obsługiwane w równym stopniu przez każdą powłokę, podczas korzystania z różnych powłok mogą wystąpić różne problemy. Na przykład polecenie, które należy wprowadzić, zsh
różni się od polecenia w pliku cmd
.
Zamiast wpisywać to za każdym razem, możesz zapisać następujący tekst w pliku o nazwie 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
Po zapisaniu myprofile.rsp
polecenia możesz uruchomić dotnet-trace
przy użyciu tej konfiguracji przy użyciu następującego polecenia:
dotnet-trace @myprofile.rsp