Dela via


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 (localhost127.0.0.1eller [::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övariabeln DOTNET_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 eller iOS för TcpClient, och endast Android för TcpServer. Se till att ange ANDROID_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 av DOTNET_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 eller iOS för TcpClient, och endast Android för TcpServer. Se till att ange ANDROID_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 ansluta 127.0.0.1, [::1], IPv4-adress, IPv6-adress, värdnamnsadresser. Starta körningen med hjälp av DOTNET_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 eller iOS för TcpClient, och endast Android för TcpServer. Se till att ange ANDROID_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 ansluta 127.0.0.1, [::1], IPv4-adress, IPv6-adress, värdnamnsadresser. Starta körningen med hjälp av DOTNET_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 eller iOS för TcpClient, och endast Android för TcpServer. Se till att ange ANDROID_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 filen DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend och inkludera följande ItemGroup i .csproj:

    <ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'">
      <AndroidEnvironment Include="app.env" />
    </ItemGroup>
    

    Det går också att ange DOTNET_DiagnosticPorts med hjälp av adb 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-lyssnaren dotnet-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 till dotnet-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-dsroutertrycker 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.

Se även