dotnet-dsrouter
Dit artikel is van toepassing op: ✔️ .NET 6.0 SDK en latere versies
Installeren
Als u de nieuwste versie van het NuGet-pakket wilt installeren, gebruikt u de installatieopdracht van het dotnet-dsrouter
dotnet-hulpprogramma:
dotnet tool install --global dotnet-dsrouter
Samenvatting
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Beschrijving
Hiermee dotnet-dsrouter
worden diagnostische hulpprogramma's, zoals dotnet-trace
en dotnet-counters
met .NET-toepassingen die worden uitgevoerd op Android, iOS en tvOS, verbonden, ongeacht of ze worden uitgevoerd als emulator, simulator of op het apparaat zelf. Diagnostische hulpprogramma's maken gebruik van lokale communicatie tussen processen (IPC) (Named Pipe, Unix Domain Socket) om verbinding te maken en te communiceren met een .NET-runtime. .NET-toepassingen die worden uitgevoerd in sandboxomgevingen op emulators, simulators en apparaten, hebben alternatieve manieren nodig om te communiceren. De dotnet-dsrouter
injecteert zichzelf tussen bestaande diagnostische hulpprogramma's en mobiele .NET-toepassingen en maakt een lokale weergave van de toepassing. Hiermee dotnet-dsrouter
kunnen diagnostische hulpprogramma's communiceren met een externe .NET-runtime alsof deze op de lokale computer wordt uitgevoerd.
De communicatie tussen diagnostische hulpprogramma's en dotnet-dsrouter
maakt gebruik van dezelfde IPC (Named Pipe, Unix Domain Socket) die wordt gebruikt bij het maken van verbinding met een lokale .NET-runtime. dotnet-dsrouter
maakt gebruik van TCP/IP in de communicatie met externe .NET-runtime en ondersteunt verschillende connectiviteitsscenario's om verschillende behoeften en vereisten te verwerken die door verschillende platforms worden gebruikt. dotnet-dsrouter
implementeert ook aanvullende ondersteuning om de connectiviteitsconfiguratie te vereenvoudigen bij het uitvoeren in emulator, simulator en op fysiek apparaat dat via USB is aangesloten.
Notitie
dotnet-dsrouter
is bedoeld voor ontwikkeling en testen en het wordt ten zeerste aanbevolen om dotnet-dsrouter
over loopback-interface (bijvoorbeeld 127.0.0.1
, [::1]
). De connectiviteitsfuncties en mogelijkheden voor het doorsturen van poorten verwerken alle scenario's met behulp van dotnet-dsrouter
lokale emulator, simulator of fysiek apparaat dat is verbonden via USB.
Waarschuwing
Het is niet raadzaam om TCP-servereindpunt aan iets te binden, behalve de loopback-interface (localhost
127.0.0.1
of [::1]
). Verbindingen naar TCP-servereindpunt worden niet-geverifieerd en niet-versleuteld. dotnet-dsrouter
is bedoeld voor ontwikkelingsgebruik en mag alleen worden uitgevoerd in ontwikkel- en testomgevingen.
Gedetailleerd gebruik van samen met mobiele toepassingen is een overzicht van dotnet-dsrouter
de respectieve .NET SDK's. Dit document bevat slechts enkele voorbeelden van het uitvoeren van diagnostische hulpprogramma's voor .NET-toepassingen die worden uitgevoerd op Android. Zie Diagnostische tracering voor uitgebreide informatie over configuratie en scenario's.
Opties
-?|-h|--help
Toont opdrachtregelhulp.
--version
Geeft de versie van het
dotnet-dsrouter
hulpprogramma weer.
Opdracht
Opdracht |
---|
dotnet-dsrouter-client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter-client-server
Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-server en externe TCP-client. De router wordt geconfigureerd met behulp van een IPC-client (verbinding maken met de IPC-server van het diagnostisch hulpprogramma) en een TCP/IP-server (runtime-TCP-client accepteren).
Samenvatting
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opties
-ipcc, --ipc-client <ipcClient>
Hiermee geeft u het IPC-adres (
--diagnostic-port
argument) van de diagnostische hulpprogrammadiagnoseserver op. Router maakt verbinding met de IPC-server van het diagnostisch hulpprogramma bij het tot stand brengen van een nieuwe route tussen de runtime en het diagnostische hulpprogramma.-tcps, --tcp-server <tcpServer>
Hiermee geeft u het TCP/IP-adres van de router met behulp van indeling
[host]:[port]
. Router kan één (127.0.0.1
,[::1]
,0.0.0.0
, ,[::]
IPv4-adres, IPv6-adres, hostnaam) of alle (*) interfaces binden. Start de runtime met behulp van deDOTNET_DiagnosticPorts
omgevingsvariabele en verbindt de router TCP-server tijdens het opstarten.-rt, --runtime-timeout <runtimeTimeout>
Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.
-v, --verbose <verbose>
Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).
-fp, --forward-port <forwardPort>
Hiermee schakelt u port forwarding in. De waarden zijn
Android
ofiOS
voorTcpClient
, en alleenAndroid
voorTcpServer
. Zorg ervoor dat u deze optie insteltANDROID_SDK_ROOT
voordat u deze optie op Android gebruikt.
dotnet-dsrouter server-server
Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-client en externe TCP-client. De router wordt geconfigureerd met behulp van een IPC-server (verbinding maken met diagnostische hulpprogramma's) en een TCP/IP-server (runtime-TCP-client accepteren).
Samenvatting
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opties
-ipcs, --ipc-server <ipcServer>
Het IPC-adres van de diagnostische server om te routeren. Router accepteert IPC-verbindingen van diagnostische hulpprogramma's voor het tot stand brengen van een nieuwe route tussen runtime en diagnostisch hulpprogramma. Als dit niet is opgegeven, gebruikt de router het standaardpad voor diagnostische IPC-servers.
-tcps, --tcp-server <tcpServer>
Het TCP/IP-adres van de router in de indeling
[host]:[port]
. Router kan één (127.0.0.1
,[::1]
,0.0.0.0
, ,[::]
IPv4-adres, IPv6-adres, hostnaam) of alle (*) interfaces binden. Start runtime met behulp vanDOTNET_DiagnosticPorts
de omgevingsvariabele en verbind de ROUTER TCP-server tijdens het opstarten.-rt, --runtime-timeout <runtimeTimeout>
Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.
-v, --verbose <verbose>
Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).
-fp, --forward-port <forwardPort>
Hiermee schakelt u port forwarding in. De waarden zijn
Android
ofiOS
voorTcpClient
, en alleenAndroid
voorTcpServer
. Zorg ervoor dat u deze optie insteltANDROID_SDK_ROOT
voordat u deze optie op Android gebruikt.
dotnet-dsrouter server-client
Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-client en externe TCP-server. De router wordt geconfigureerd met behulp van een IPC-server (verbinding maken met diagnostische hulpprogramma's) en een TCP/IP-client (verbinding maken met runtime-TCP-server).
Samenvatting
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opties
-ipcs, --ipc-server <ipcServer>
Het IPC-adres van de diagnostische server om te routeren. Router accepteert IPC-verbindingen van diagnostische hulpprogramma's voor het tot stand brengen van een nieuwe route tussen de runtime en het diagnostische hulpprogramma. Als dit niet is opgegeven, gebruikt de router het standaardpad voor diagnostische IPC-servers.
-tcpc, --tcp-client <tcpClient>
Het TCP/IP-adres van de runtime in de indeling
[host]:[port]
. Router kan verbinding maken127.0.0.1
,[::1]
IPv4-adres, IPv6-adres, hostnaamadressen. Start de runtime met behulp vanDOTNET_DiagnosticPorts
de omgevingsvariabele om de listener in te stellen.-rt, --runtime-timeout <runtimeTimeout>
Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.
-v, --verbose <verbose>
Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).
-fp, --forward-port <forwardPort>
Hiermee schakelt u port forwarding in. De waarden zijn
Android
ofiOS
voorTcpClient
, en alleenAndroid
voorTcpServer
. Zorg ervoor dat u deze optie insteltANDROID_SDK_ROOT
voordat u deze optie op Android gebruikt.
dotnet-dsrouter client-client
Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-server en externe TCP-server. De router wordt geconfigureerd met behulp van een IPC-client (verbinding maken met de IPC-server van het diagnostisch hulpprogramma) en een TCP/IP-client (verbinding maken met runtime-TCP-server).
Samenvatting
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opties
-ipcc, --ipc-client <ipcClient>
Het IPC-adres van de diagnostische hulpprogrammadiagnoseserver (
--diagnostic-port argument
). Router maakt verbinding met de IPC-server van het diagnostisch hulpprogramma bij het tot stand brengen van een nieuwe route tussen runtime en diagnostisch hulpprogramma.-tcpc, --tcp-client <tcpClient>
Het TCP/IP-adres van de runtime in de indeling
[host]:[port]
. Router kan verbinding maken127.0.0.1
,[::1]
IPv4-adres, IPv6-adres, hostnaamadressen. Start de runtime met behulp vanDOTNET_DiagnosticPorts
de omgevingsvariabele om listener in te stellen.-rt, --runtime-timeout <runtimeTimeout>
Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.
-v, --verbose <verbose>
Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).
-fp, --forward-port <forwardPort>
Hiermee schakelt u port forwarding in. De waarden zijn
Android
ofiOS
voorTcpClient
, en alleenAndroid
voorTcpServer
. Zorg ervoor dat u deze optie insteltANDROID_SDK_ROOT
voordat u deze optie op Android gebruikt.
Een opstarttracering verzamelen met dotnet-trace vanuit een .NET-toepassing die wordt uitgevoerd op Android
Soms kan het handig zijn om een tracering van een toepassing te verzamelen vanaf het opstarten. In de volgende stappen ziet u hoe u dit doet op basis van een .NET-toepassing die wordt uitgevoerd op Android. Omdat dotnet-dsrouter
deze wordt uitgevoerd met behulp van port forwarding, werkt hetzelfde scenario voor toepassingen die worden uitgevoerd op een lokale emulator en op een fysiek apparaat dat via USB is gekoppeld. Zorg ervoor dat u dit instelt ANDROID_SDK_ROOT
voordat u deze optie gebruikt of dotnet-dsrouter
dat u niet kunt vinden adb
dat het doorsturen via poort moet worden ingesteld.
Start dotnet-dsrouter in server-servermodus:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Omgevingsvariabele instellen
DOTNET_DiagnosticPorts
met behulp vanAndroidEnvironment
:Maak een bestand in dezelfde map als de .csproj met behulp van een naam zoals
app.env
, voeg omgevingsvariabelen toe aan het bestandDOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
en voeg het volgendeItemGroup
toe aan .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Het is ook mogelijk om het volgende in te stellen
DOTNET_DiagnosticPorts
:adb shell setprop
adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Bouw en start de toepassing met behulp van .NET Android SDK en schakel tracering in door te geven
/p:AndroidEnableProfiler=true
aan MSBuild. Omdat de app is geconfigureerd om te onderbreken bij het opstarten, wordt er weer verbinding gemaakt met de TCP/IP-listener die wordt uitgevoerd127.0.0.1:9000
en wacht u tot diagnostische hulpprogramma's verbinding maken voordat de uitvoering van dedotnet-dsrouter
toepassing wordt hervat.Start
dotnet-trace
in de verzamelmodus, maak verbinding metdotnet-dsrouter
de IPC-server, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
start een traceringssessie en hervat de toepassing die nu wordt uitgevoerd. Er wordt een stroom gebeurtenissen vanuit de mobiele toepassing naar dotnet-dsrouter
het dotnet-trace
nettrace-bestand gestroomd. Wanneer u klaar bent met traceren, drukt u op Enter om te controleren of de traceringssessie correct is gesloten, zodat het nettrace-bestand alle benodigde gegevens bevat voordat de toepassing wordt gesloten.
Het is mogelijk om verschillende traceringssessies uit te voeren op dezelfde actieve toepassing gedurende een bepaalde periode, het dotnet-dsrouter
uitvoeren en opnieuw uitvoeren dotnet-trace
wanneer er een nieuwe traceringssessie nodig is.
dotnet-dsrouter
kan op de achtergrond worden uitgevoerd en opnieuw worden gebruikt als een toepassing is geconfigureerd om verbinding te maken met behulp van het adres en de poort.
dotnet-dsrouter
is op elk gewenst moment gekoppeld aan één actieve toepassing. Als er tegelijkertijd verschillende toepassingen moeten worden getraceerd, moet elke toepassing een eigen dotnet-dsrouter
exemplaar gebruiken door een uniek IPC-, TCP/IP-adrespaar in dotnet-dsrouter
te stellen en verschillende toepassingsexemplaren te configureren om verbinding te maken met het unieke dotnet-dsrouter
exemplaar.
Als dotnet-dsrouter
deze wordt uitgevoerd met --forward-port
het doel android en adb
de server, emulator of het apparaat opnieuw wordt opgestart, moeten alle exemplaren opnieuw worden opgestart en moeten ook dotnet-dsrouter
regels voor het doorsturen van poorten worden hersteld.
Wanneer u klaar bent met het gebruikdotnet-dsrouter
, drukt u op Q of Ctrl + C om de toepassing af te sluiten.
Notitie
Bij uitvoering dotnet-dsrouter
in Windows wordt Named Pipes gebruikt voor het IPC-kanaal. Vervang ~/mylocalport door mylocalport in bovenstaande voorbeelden bij uitvoering in Windows.
Notitie
TCP/IP-poort 9000 is slechts een voorbeeld. Elke gratis TCP/IP-poort kan worden gebruikt.
Notitie
Unix Domain Socket ~/mylocalport is slechts een voorbeeld. Elk gratis Unix Domain Socket-bestandspad kan worden gebruikt.
Een tracering verzamelen met dotnet-trace vanuit een .NET-toepassing die wordt uitgevoerd op Android
Als er geen tracering hoeft te worden verzameld tijdens het opstarten van de toepassing, is het mogelijk om de toepassing in nosuspend
de modus te starten, wat betekent dat runtime bij het opstarten niet blokkeert totdat diagnostische hulpprogramma's verbinding maken voordat de uitvoering wordt hervat. De meeste hierboven beschreven scenario's zijn ook van toepassing op deze modus. Vervang suspend
nosuspend
deze door in DOTNET_DiagnosticPorts
de omgevingsvariabele om de toepassing in nosuspend
de modus te starten.