dotnet-dsrouter
Tento článek se vztahuje na: ✔️ .NET 6.0 SDK a novější verze
Instalace
Pokud chcete nainstalovat nejnovější verzi dotnet-dsrouter
balíčku NuGet, použijte příkaz dotnet tool install :
dotnet tool install --global dotnet-dsrouter
Synopse
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Popis
dotnet-dsrouter
Diagnostické nástroje, jako jsou dotnet-trace
dotnet-counters
aplikace .NET, které běží na Androidu, iOSu a tvOSu, bez ohledu na to, jestli běží jako emulátor, simulátor nebo samotné zařízení. Diagnostické nástroje používají k připojení a komunikaci s modulem runtime .NET místní komunikaci mezi procesy (IPC) (Pojmenované potrubí, Unix Domain Socket). Aplikace .NET spuštěné v prostředích v izolovaném prostoru (sandbox) v emulátorech, simulátorech a zařízeních potřebují alternativní způsoby komunikace. Vloží dotnet-dsrouter
se mezi existující diagnostické nástroje a mobilní aplikace .NET a vytvoří místní reprezentaci aplikace. Diagnostické dotnet-dsrouter
nástroje umožňují komunikovat se vzdáleným modulem runtime .NET, jako by byl spuštěný na místním počítači.
Komunikace mezi diagnostickými nástroji a dotnet-dsrouter
používá stejný IPC (Pojmenovaný kanál, Unix Domain Socket) jako při připojování k místnímu modulu runtime .NET. dotnet-dsrouter
využívá protokol TCP/IP ke komunikaci se vzdáleným modulem runtime .NET a podporuje několik různých scénářů připojení ke zpracování různých potřeb a požadavků používaných různými platformami. dotnet-dsrouter
Implementuje také další podporu pro zjednodušení konfigurace připojení při spuštění v emulátoru, simulátoru a na fyzickém zařízení připojeném přes USB.
Poznámka:
dotnet-dsrouter
je určen pro vývoj a testování a důrazně se doporučuje spouštět dotnet-dsrouter
přes rozhraní zpětné smyčky (například 127.0.0.1
, ). [::1]
Funkce připojení a funkce předávání portů pro zpracování všech scénářů pomocí místního emulátoru, simulátoru nebo fyzického zařízení připojeného dotnet-dsrouter
přes USB.
Upozorňující
Vazba koncového bodu serveru TCP na cokoli kromě rozhraní zpětné smyčky (localhost
nebo[::1]
) se nedoporučuje. 127.0.0.1
Všechna připojení ke koncovému bodu serveru TCP budou neověřená a nešifrovaná. dotnet-dsrouter
je určen pro použití při vývoji a měl by být spuštěn pouze ve vývojových a testovacích prostředích.
Podrobné využití dotnet-dsrouter
společně s mobilními aplikacemi je popsáno příslušnými sadami .NET SDK. Tento dokument bude obsahovat jenom několik příkladů, jak spouštět diagnostické nástroje pro aplikace .NET běžící na Androidu. Podrobné informace o konfiguraci a scénářích najdete v tématu Trasování diagnostiky.
Možnosti
-?|-h|--help
Zobrazuje nápovědu k příkazovému řádku.
--version
Zobrazí verzi
dotnet-dsrouter
nástroje.
Příkazy
Příkaz |
---|
dotnet-dsrouter client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Spusťte diagnostický server aplikace .NET, který směruje místní server IPC a vzdáleného klienta TCP. Směrovač se konfiguruje pomocí klienta IPC (připojení serveru IPC diagnostického nástroje) a serveru TCP/IP (přijetí modulu runtime klienta TCP).
Synopse
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Možnosti
-ipcc, --ipc-client <ipcClient>
Určuje adresu IPC diagnostického serveru diagnostického nástroje (
--diagnostic-port
argument). Směrovač se připojí k serveru IPC diagnostického nástroje při navazování nové trasy mezi modulem runtime a diagnostickým nástrojem.-tcps, --tcp-server <tcpServer>
Určuje směrovač TCP/IP adresu pomocí formátu
[host]:[port]
. Směrovač může svázat jedno rozhraní (127.0.0.1
,[::1]
, ,0.0.0.0
[::]
, IPv4 adresa, IPv6 adresa, název hostitele) nebo všechna rozhraní (*). Spustí modul runtime pomocíDOTNET_DiagnosticPorts
proměnné prostředí a připojí server TCP směrovače během spouštění.-rt, --runtime-timeout <runtimeTimeout>
Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.
-v, --verbose <verbose>
Povolí podrobné protokolování (ladění|trasování).
-fp, --forward-port <forwardPort>
Povolí přesměrování portů. Hodnoty jsou
Android
neboiOS
proTcpClient
, a pouzeAndroid
proTcpServer
. Před použitím této možnosti v Androidu nezapomeňte nastavitANDROID_SDK_ROOT
.
dotnet-dsrouter server-server
Spusťte server diagnostiky aplikací .NET, který směruje místního klienta IPC a vzdáleného klienta TCP. Směrovač se konfiguruje pomocí serveru IPC (připojení pomocí diagnostických nástrojů) a serveru TCP/IP (příjem klienta TCP modulu runtime).
Synopse
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Možnosti
-ipcs, --ipc-server <ipcServer>
Adresa IPC diagnostického serveru, která se má směrovat. Směrovač přijímá připojení IPC z diagnostických nástrojů, které vytvářejí novou trasu mezi modulem runtime a diagnostickým nástrojem. Pokud není zadaný, směrovač použije výchozí cestu diagnostického serveru IPC.
-tcps, --tcp-server <tcpServer>
Směrovač TCP/IP adresa ve formátu
[host]:[port]
. Směrovač může svázat jedno rozhraní (127.0.0.1
,[::1]
, ,0.0.0.0
[::]
, IPv4 adresa, IPv6 adresa, název hostitele) nebo všechna rozhraní (*). Spusťte modul runtime pomocíDOTNET_DiagnosticPorts
proměnné prostředí a připojte server TCP směrovače během spouštění.-rt, --runtime-timeout <runtimeTimeout>
Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.
-v, --verbose <verbose>
Povolí podrobné protokolování (ladění|trasování).
-fp, --forward-port <forwardPort>
Povolí přesměrování portů. Hodnoty jsou
Android
neboiOS
proTcpClient
, a pouzeAndroid
proTcpServer
. Před použitím této možnosti v Androidu nezapomeňte nastavitANDROID_SDK_ROOT
.
dotnet-dsrouter server-client
Spusťte diagnostického serveru aplikace .NET směrování místního klienta IPC a vzdáleného serveru TCP. Směrovač se konfiguruje pomocí serveru IPC (připojení pomocí diagnostických nástrojů) a klienta TCP/IP (připojení k serveru TCP modulu runtime).
Synopse
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Možnosti
-ipcs, --ipc-server <ipcServer>
Adresa IPC diagnostického serveru, která se má směrovat. Směrovač přijímá připojení IPC z diagnostických nástrojů, které vytvářejí novou trasu mezi modulem runtime a diagnostickým nástrojem. Pokud není zadaný, směrovač použije výchozí cestu diagnostického serveru IPC.
-tcpc, --tcp-client <tcpClient>
Runtime TCP/IP adresa ve formátu
[host]:[port]
. Směrovač se může připojit127.0.0.1
, ,[::1]
IPv4 adresa, adresa IPv6, adresy názvu hostitele. Spusťte modul runtime pomocíDOTNET_DiagnosticPorts
proměnné prostředí k nastavení naslouchacího procesu.-rt, --runtime-timeout <runtimeTimeout>
Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.
-v, --verbose <verbose>
Povolí podrobné protokolování (ladění|trasování).
-fp, --forward-port <forwardPort>
Povolí přesměrování portů. Hodnoty jsou
Android
neboiOS
proTcpClient
, a pouzeAndroid
proTcpServer
. Před použitím této možnosti v Androidu nezapomeňte nastavitANDROID_SDK_ROOT
.
dotnet-dsrouter client-client
Spusťte server diagnostiky aplikací .NET, který směruje místní server IPC a vzdálený server TCP. Směrovač se konfiguruje pomocí klienta IPC (připojení serveru IPC diagnostického nástroje) a klienta TCP/IP (připojující se server TCP modulu runtime).
Synopse
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Možnosti
-ipcc, --ipc-client <ipcClient>
Adresa IPC diagnostického nástroje (
--diagnostic-port argument
IPC) diagnostického nástroje Směrovač se připojí k serveru IPC diagnostického nástroje při vytváření nové trasy mezi modulem runtime a diagnostickým nástrojem.-tcpc, --tcp-client <tcpClient>
Runtime TCP/IP adresa ve formátu
[host]:[port]
. Směrovač se může připojit127.0.0.1
, ,[::1]
IPv4 adresa, adresa IPv6, adresy názvu hostitele. Spusťte modul runtime pomocíDOTNET_DiagnosticPorts
proměnné prostředí k nastavení naslouchacího procesu.-rt, --runtime-timeout <runtimeTimeout>
Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.
-v, --verbose <verbose>
Povolí podrobné protokolování (ladění|trasování).
-fp, --forward-port <forwardPort>
Povolí přesměrování portů. Hodnoty jsou
Android
neboiOS
proTcpClient
, a pouzeAndroid
proTcpServer
. Před použitím této možnosti v Androidu nezapomeňte nastavitANDROID_SDK_ROOT
.
Shromažďování trasování po spuštění pomocí dotnet-trace z aplikace .NET běžící na Androidu
Někdy může být užitečné shromáždit trasování aplikace od jejího spuštění. Následující kroky ilustrují proces, jak to udělat, když cílíte na aplikaci .NET běžící na Androidu. Vzhledem k tomu dotnet-dsrouter
, že se používá přesměrování portů, funguje stejný scénář pro aplikace spuštěné v místním emulátoru a na fyzickém zařízení připojeném přes USB. Před použitím této možnosti dotnet-dsrouter
nezapomeňte nastavit ANDROID_SDK_ROOT
nebo nebudete moct najít adb
potřebné k nastavení přesměrování portů.
Spusťte dotnet-dsrouter v režimu serveru:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Nastavení
DOTNET_DiagnosticPorts
proměnné prostředí pomocíAndroidEnvironment
:Vytvořte soubor ve stejném adresáři jako soubor .csproj s použitím názvu, například
app.env
, přidejte do souboruDOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
proměnné prostředí a do souboru přidejte následujícíItemGroup
položky:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Je také možné nastavit
DOTNET_DiagnosticPorts
pomocíadb shell setprop
:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Sestavte a spusťte aplikaci pomocí sady .NET Android SDK a povolte trasování předáním
/p:AndroidEnableProfiler=true
nástroje MSBuild. Vzhledem k tomu, že je aplikace nakonfigurovaná tak, aby se pozastavila při spuštění, připojí se zpět k naslouchacímudotnet-dsrouter
127.0.0.1:9000
procesu TCP/IP a před obnovením provádění aplikace čeká na připojení diagnostických nástrojů.Spusťte v režimu shromažďování, připojte
dotnet-trace
se kdotnet-dsrouter
serveru IPC, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
spustí relaci trasování a obnoví aplikaci, která se teď bude dál spouštět. Stream událostí začne proudit z mobilní aplikace prostřednictvím dotnet-dsrouter
souboru dotnet-trace
nettrace. Po dokončení trasování stiskněte Enter , abyste se ujistili, že relace trasování je správně zavřená a ujistěte se, že soubor nettrace obsahuje všechna potřebná data, než se aplikace zavře.
Je možné spouštět několik trasovacích relací proti stejné spuštěné aplikaci v průběhu času, nechat dotnet-dsrouter
spuštěné a znovu spustit dotnet-trace
, když je potřeba nová relace trasování.
dotnet-dsrouter
pokud je aplikace nakonfigurovaná tak, aby se připojila pomocí adresy a portu, může zůstat spuštěná na pozadí a znovu ji použít.
dotnet-dsrouter
je svázaný s jednou spuštěnou aplikací kdykoli. Pokud potřebujete současně trasovat několik různých aplikací, musí každá aplikace používat vlastní dotnet-dsrouter
instanci tak, že nastaví jedinečnou dvojici IPC, TCP dotnet-dsrouter
/IP adresy a nakonfiguruje různé instance aplikace, aby se připojila zpět ke své jedinečné dotnet-dsrouter
instanci.
Pokud dotnet-dsrouter
je spuštěný s cílením na --forward-port
Android a adb
server, emulátor nebo zařízení se restartuje, je potřeba restartovat všechny dotnet-dsrouter
instance a obnovit pravidla předávání portů.
Až budete hotovi, dotnet-dsrouter
stisknutím klávesY Q nebo Ctrl + C ukončete aplikaci.
Poznámka:
Při spuštění dotnet-dsrouter
ve Windows bude pro svůj kanál IPC používat pojmenované kanály. Nahraďte ~/mylocalport parametrem mylocalport ve výše uvedených příkladech při spuštění ve Windows.
Poznámka:
Příkladem je port TCP/IP 9000. Můžete použít libovolný bezplatný port TCP/IP.
Poznámka:
Unix Domain Socket ~/mylocalport je jen příklad. Lze použít libovolnou bezplatnou cestu k souboru Unix Domain Socket.
Shromažďování trasování pomocí dotnet-trace z aplikace .NET spuštěné na Androidu
Pokud není potřeba shromažďovat trasování během spouštění aplikace, je možné spustit aplikaci v nosuspend
režimu, což znamená, že modul runtime při spuštění neblokuje čekání na připojení diagnostických nástrojů před zahájením provádění. Většina výše popsaných scénářů platí i pro tento režim, stačí nahradit suspend
proměnnou nosuspend
DOTNET_DiagnosticPorts
prostředí a spustit aplikaci v nosuspend
režimu.