dotnet-dsrouter
Den här artikeln gäller för: ✔️ .NET 6.0 SDK och senare versioner
Installera
Om du vill installera den senaste versionen av dotnet-dsrouter
NuGet-paketet använder du installationskommandot för dotnet-verktyget:
dotnet tool install --global dotnet-dsrouter
Sammanfattning
dotnet-dsrouter [-?, -h, --help] [--version] <command>
beskrivning
Ansluter dotnet-dsrouter
diagnostikverktyg som och dotnet-counters
till .NET-program som dotnet-trace
körs på Android, iOS och tvOS, oavsett om de körs som emulator, simulator eller på själva enheten. Diagnostikverktyg använder lokal kommunikation mellan processer (IPC) (Named Pipe, Unix Domain Socket) för att ansluta och kommunicera med en .NET-körning. .NET-program som körs i sandbox-miljöer på emulatorer, simulatorer och enheter behöver alternativa sätt att kommunicera. Den dotnet-dsrouter
matar in sig själv mellan befintliga diagnostikverktyg och .NET-mobilprogram och skapar en lokal representation av programmet. dotnet-dsrouter
Aktiverar diagnostikverktyg för att kommunicera med en fjärransluten .NET-körning som om den har körts på den lokala datorn.
Kommunikationen mellan diagnostikverktyg och dotnet-dsrouter
använder samma IPC (Named Pipe, Unix Domain Socket) som används vid anslutning till en lokal .NET-körning. dotnet-dsrouter
använder TCP/IP i sin kommunikation med fjärransluten .NET-körning och stöder flera olika anslutningsscenarier för att hantera olika behov och krav som används av olika plattformar. dotnet-dsrouter
implementerar också ytterligare stöd för att förenkla anslutningskonfigurationen vid körning i emulator, simulator och på fysiska enheter som är anslutna via USB.
Kommentar
dotnet-dsrouter
är avsett för utveckling och testning och vi rekommenderar starkt att du kör dotnet-dsrouter
över loopback-gränssnittet (till exempel 127.0.0.1
, [::1]
). Anslutningsfunktionerna och portvidarebefordringsfunktionerna i hanterar alla scenarier med hjälp av dotnet-dsrouter
lokal emulator, simulator eller fysisk enhet som är ansluten via USB.
Varning
Bind TCP-serverslutpunkten till allt annat än loopback-gränssnittet (localhost
127.0.0.1
eller [::1]
) rekommenderas inte. Alla anslutningar till TCP-serverslutpunkten kommer att vara oautentiserade och okrypterade. dotnet-dsrouter
är avsett för utveckling och bör endast köras i utvecklings- och testmiljöer.
Detaljerad användning av dotnet-dsrouter
tillsammans med mobila program beskrivs av respektive .NET SDK:er. Det här dokumentet innehåller bara några exempel på hur du kör diagnostikverktyg mot .NET-program som körs på Android. Detaljerad information om konfiguration och scenarier finns i Diagnostikspårning.
Alternativ
-?|-h|--help
Visar kommandoradshjälp.
--version
Visar versionen av
dotnet-dsrouter
verktyget.
Kommandon
Command |
---|
dotnet-dsrouter client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Starta en .NET-programdiagnostikserver som dirigerar lokal IPC-server och en fjärransluten TCP-klient. Routern konfigureras med en IPC-klient (ansluter diagnostikverktygets IPC-server) och en TCP/IP-server (accepterar TCP-klient för körning).
Sammanfattning
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Alternativ
-ipcc, --ipc-client <ipcClient>
Anger diagnostikverktygets IPC-adress (
--diagnostic-port
argument). Routern ansluter till diagnostikverktygets IPC-server när en ny väg upprättas mellan körningen och diagnostikverktyget.-tcps, --tcp-server <tcpServer>
Anger routerns TCP/IP-adress med formatet
[host]:[port]
. Routern kan binda en (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4-adress, IPv6-adress, värdnamn) eller alla (*) gränssnitt. Startar körningen med miljövariabelnDOTNET_DiagnosticPorts
och ansluter routerns TCP-server under starten.-rt, --runtime-timeout <runtimeTimeout>
Stänger automatiskt av routern om ingen körning ansluter till den före den angivna tidsgränsen (sekunder). Om det inte anges utlöser inte routern någon automatisk avstängning.
-v, --verbose <verbose>
Aktiverar utförlig loggning (felsökning|spårning).
-fp, --forward-port <forwardPort>
Aktiverar portvidarebefordring. Värdena är
Android
elleriOS
förTcpClient
, och endastAndroid
förTcpServer
. Se till att angeANDROID_SDK_ROOT
innan du använder det här alternativet på Android.
dotnet-dsrouter server-server
Starta en .NET-programdiagnostikserver som dirigerar lokal IPC-klient och en fjärransluten TCP-klient. Routern konfigureras med hjälp av en IPC-server (ansluter till med diagnostikverktyg) och en TCP/IP-server (accepterar TCP-klient för körning).
Sammanfattning
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Alternativ
-ipcs, --ipc-server <ipcServer>
Diagnostikserverns IPC-adress som ska dirigeras. Routern accepterar IPC-anslutningar från diagnostikverktyg som upprättar en ny väg mellan körnings- och diagnostikverktyget. Om det inte anges använder routern standardsökvägen för IPC-diagnostikservern.
-tcps, --tcp-server <tcpServer>
Routerns TCP/IP-adress i formatet
[host]:[port]
. Routern kan binda en (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4-adress, IPv6-adress, värdnamn) eller alla (*) gränssnitt. Starta körningen med hjälp avDOTNET_DiagnosticPorts
miljövariabeln och anslut routern TCP-servern under starten.-rt, --runtime-timeout <runtimeTimeout>
Stänger automatiskt av routern om ingen körning ansluter till den före den angivna tidsgränsen (sekunder). Om det inte anges utlöser inte routern någon automatisk avstängning.
-v, --verbose <verbose>
Aktiverar utförlig loggning (felsökning|spårning).
-fp, --forward-port <forwardPort>
Aktiverar portvidarebefordring. Värdena är
Android
elleriOS
förTcpClient
, och endastAndroid
förTcpServer
. Se till att angeANDROID_SDK_ROOT
innan du använder det här alternativet på Android.
dotnet-dsrouter server-client
Starta en .NET-programdiagnostikserver som dirigerar lokal IPC-klient och fjärransluten TCP-server. Routern konfigureras med hjälp av en IPC-server (ansluter till med diagnostikverktyg) och en TCP/IP-klient (ansluter TCP-server för körning).
Sammanfattning
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Alternativ
-ipcs, --ipc-server <ipcServer>
Diagnostikserverns IPC-adress som ska dirigeras. Routern accepterar IPC-anslutningar från diagnostikverktyg som upprättar en ny väg mellan körnings- och diagnostikverktyget. Om det inte anges använder routern standardsökvägen för IPC-diagnostikservern.
-tcpc, --tcp-client <tcpClient>
TCP/IP-adressen för körning i formatet
[host]:[port]
. Routern kan ansluta127.0.0.1
,[::1]
, IPv4-adress, IPv6-adress, värdnamnsadresser. Starta körningen med hjälp avDOTNET_DiagnosticPorts
miljövariabeln för att konfigurera lyssnaren.-rt, --runtime-timeout <runtimeTimeout>
Stänger automatiskt av routern om ingen körning ansluter till den före den angivna tidsgränsen (sekunder). Om det inte anges utlöser inte routern någon automatisk avstängning.
-v, --verbose <verbose>
Aktiverar utförlig loggning (felsökning|spårning).
-fp, --forward-port <forwardPort>
Aktiverar portvidarebefordring. Värdena är
Android
elleriOS
förTcpClient
, och endastAndroid
förTcpServer
. Se till att angeANDROID_SDK_ROOT
innan du använder det här alternativet på Android.
dotnet-dsrouter client-client
Starta en .NET-programdiagnostikserver som dirigerar lokal IPC-server och fjärr-TCP-server. Routern konfigureras med en IPC-klient (ansluter diagnostikverktygets IPC-server) och en TCP/IP-klient (ansluter TCP-server för körning).
Sammanfattning
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Alternativ
-ipcc, --ipc-client <ipcClient>
Diagnostikverktygets IPC-adress (
--diagnostic-port argument
). Routern ansluter till diagnostikverktygets IPC-server när en ny väg upprättas mellan körnings- och diagnostikverktyget.-tcpc, --tcp-client <tcpClient>
TCP/IP-adressen för körning i formatet
[host]:[port]
. Routern kan ansluta127.0.0.1
,[::1]
, IPv4-adress, IPv6-adress, värdnamnsadresser. Starta körningen med hjälp avDOTNET_DiagnosticPorts
miljövariabeln för att konfigurera lyssnaren.-rt, --runtime-timeout <runtimeTimeout>
Stänger automatiskt av routern om ingen körning ansluter till den före den angivna tidsgränsen (sekunder). Om det inte anges utlöser inte routern någon automatisk avstängning.
-v, --verbose <verbose>
Aktiverar utförlig loggning (felsökning|spårning).
-fp, --forward-port <forwardPort>
Aktiverar portvidarebefordring. Värdena är
Android
elleriOS
förTcpClient
, och endastAndroid
förTcpServer
. Se till att angeANDROID_SDK_ROOT
innan du använder det här alternativet på Android.
Samla in en startspårning med dotnet-trace från ett .NET-program som körs på Android
Ibland kan det vara användbart att samla in en spårning av ett program från starten. Följande steg illustrerar processen med att göra det med inriktning på ett .NET-program som körs på Android. Eftersom dotnet-dsrouter
körs med portvidarebefordring fungerar samma scenario mot program som körs på en lokal emulator och på en fysisk enhet som är ansluten via USB. Se till att ange ANDROID_SDK_ROOT
innan du använder det här alternativet eller dotnet-dsrouter
inte hittar adb
det som behövs för att konfigurera portvidarebefordring.
Starta dotnet-dsrouter i server-serverläge:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Ange
DOTNET_DiagnosticPorts
miljövariabel med :AndroidEnvironment
Skapa en fil i samma katalog som .csproj med ett namn som
app.env
, lägg till miljövariabler i filenDOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
och inkludera följandeItemGroup
i .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Det går också att ange
DOTNET_DiagnosticPorts
med hjälp avadb shell setprop
:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Skapa och starta programmet med .NET Android SDK och aktivera spårning genom att skicka
/p:AndroidEnableProfiler=true
till MSBuild. Eftersom appen har konfigurerats att pausas vid start ansluter den tillbaka till TCP/IP-lyssnarendotnet-dsrouter
som körs på och väntar på127.0.0.1:9000
att diagnostikverktyget ska ansluta innan programkörningen återupptas.Starta
dotnet-trace
i insamlingsläge och anslut tilldotnet-dsrouter
IPC-servern, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
startar en spårningssession och återupptar programmet som nu fortsätter att köras. En ström av händelser börjar flöda från mobilprogrammet till dotnet-dsrouter
dotnet-trace
nettrace-filen. När du är klar med spårningen trycker du på Retur för att se till att spårningssessionen är korrekt stängd och ser till att nettrace-filen innehåller alla nödvändiga data innan programmet stängs.
Det går att köra flera spårningssessioner mot samma program som körs över tid, lämna dotnet-dsrouter
körningen och kör dotnet-trace
igen när en ny spårningssession behövs.
dotnet-dsrouter
kan köras i bakgrunden och återanvändas om ett program har konfigurerats för att ansluta med hjälp av dess adress och port.
dotnet-dsrouter
är kopplat till ett program som körs när som helst. Om det finns behov av att spåra flera olika program samtidigt måste varje program använda sin egen dotnet-dsrouter
instans genom att konfigurera ett unikt IPC, TCP/IP-adresspar i dotnet-dsrouter
och konfigurera olika programinstanser för att ansluta tillbaka till sin unika dotnet-dsrouter
instans.
Om dotnet-dsrouter
körs med --forward-port
inriktning på Android och adb
server, emulator eller enhet startas om, måste alla dotnet-dsrouter
instanser även startas om för att återställa portvidarebefordringsregler.
När du är klar med , dotnet-dsrouter
trycker du på Q eller Ctrl + C för att avsluta programmet.
Kommentar
När den körs dotnet-dsrouter
i Windows kommer den att använda namngivna pipes för sin IPC-kanal. Ersätt ~/mylocalport med mylocalport i ovanstående exempel när du kör i Windows.
Kommentar
TCP/IP-port 9000 är bara ett exempel. Alla kostnadsfria TCP/IP-portar kan användas.
Kommentar
Unix Domain Socket ~/mylocalport är bara ett exempel. Alla kostnadsfria Unix Domain Socket-filsökvägar kan användas.
Samla in en spårning med dotnet-trace från ett .NET-program som körs på Android
Om det inte finns något behov av att samla in en spårning under programstarten är det möjligt att starta programmet i nosuspend
läge, vilket innebär att körningen inte blockeras vid start i väntan på att diagnostikverktyget ska ansluta innan körningen återupptas. Det mesta av det ovan beskrivna scenariot gäller även för det här läget. Ersätt suspend
bara med nosuspend
i DOTNET_DiagnosticPorts
miljövariabeln för att starta programmet i nosuspend
läge.