Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se vztahuje na: ✔️ .NET 6.0 SDK a novější verze
Install
Pokud chcete nainstalovat nejnovější vydání balíčku NuGet
dotnet tool install --global dotnet-dsrouter
Synopsis
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Description
dotnet-dsrouter spojuje diagnostické nástroje, jako jsou dotnet-trace a dotnet-counters, s aplikacemi .NET běžícími na platformách Android, iOS a tvOS, ať už jako emulátor, simulátor, nebo na samotném zařízení. Diagnostické nástroje používají k připojení a komunikaci s .NET runtime 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. Komponenta dotnet-dsrouter se sama vloží 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 u připojení k místnímu .NET runtime.
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.
Note
dotnet-dsrouter je určen pro vývoj a testování a důrazně doporučujeme spouštět dotnet-dsrouter přes rozhraní zpětné smyčky (například 127.0.0.1, [::1]). Funkce připojení a předávání portů dotnet-dsrouter zajišťují zpracování všech scénářů pomocí místního emulátoru, simulátoru nebo fyzického zařízení připojeného přes USB.
Warning
Vazba koncového bodu serveru TCP na cokoli kromě rozhraní zpětné smyčky (localhost, 127.0.0.1 nebo [::1]) se nedoporučuje. 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|--helpZobrazuje nápovědu k příkazovému řádku.
--versionZobrazí verzi
dotnet-dsrouternástroje.
Commands
| Command |
|---|
| dotnet-dsrouter client-server |
| dotnet-dsrouter server-server |
| dotnet-dsrouter server-client |
| dotnet-dsrouter client-client |
dotnet-dsrouter klient-server
Spusťte diagnostický server aplikace .NET, který směruje místní server IPC a vzdálený klient 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).
Synopsis
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-portargument). 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_DiagnosticPortspromě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 uplynutím zadaného timeoutu (v sekundách) nepřipojí žádné běhové prostředí. Pokud není uvedeno, 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
AndroidneboiOSproTcpClient, a pouzeAndroidproTcpServer. Pro Android můžete volitelně nastavit$ANDROID_HOMEna platnou cestu Android SDK.
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 (k nimž se připojují diagnostické nástroje) a serveru TCP/IP (který přijímá klienty TCP/IP za běhu).
Synopsis
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 pro směrování. Směrovač přijímá připojení IPC z diagnostických nástrojů, čímž vytváří nový kanál pro spojení 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>Adresa TCP/IP směrovače 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í proměnné prostředíDOTNET_DiagnosticPorts, který se připojí na server TCP směrovače během spouštění.-rt, --runtime-timeout <runtimeTimeout>Směrovač se automaticky vypne, pokud se k němu nepřipojí žádné běhové prostředí před zadaným časovým limitem v sekundách. Pokud není specifikováno, 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
AndroidneboiOSproTcpClient, a pouzeAndroidproTcpServer. Pro Android můžete volitelně nastavit$ANDROID_HOMEna platnou cestu Android SDK.
dotnet-dsrouter server-client
Spusťte diagnostický server aplikace .NET, který zajišťuje směrování místního klienta IPC a vzdáleného serveru TCP. Směrovač se konfiguruje pomocí serveru IPC, k němuž se připojují diagnostické nástroje, a klienta TCP/IP, který se připojuje k serveru TCP modulu runtime.
Synopsis
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>Diagnostická adresa IPC serveru pro směrování. Směrovač přijímá IPC připojení z diagnostických nástrojů a tím vytváří novou trasu mezi prostředím 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řipojit na127.0.0.1,[::1], adresu IPv4, adresu IPv6 a adresy názvu hostitele. PomocíDOTNET_DiagnosticPortsproměnné prostředí spusťte modul runtime pro nastavení listeneru.-rt, --runtime-timeout <runtimeTimeout>Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (v sekundách) nepřipojí žádný systém. Pokud není specifikováno, směrovač neprovede 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
AndroidneboiOSproTcpClient, a pouzeAndroidproTcpServer. Pro Android můžete volitelně nastavit$ANDROID_HOMEna platnou cestu Android SDK.
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í diagnostického nástroje serveru IPC) a klienta TCP/IP (připojujícího se běhového modulu serveru TCP).
Synopsis
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 serveru (
--diagnostic-port argument). 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 adresy, adresy IPv6, adresy hostitelů. Spusťte modul runtime pomocíDOTNET_DiagnosticPortsproměnné prostředí pro nastavení nasluchače.-rt, --runtime-timeout <runtimeTimeout>Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (v sekundách) nepřipojí žádné běhové prostředí. Pokud není specifikováno, 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
AndroidneboiOSproTcpClient, a pouzeAndroidproTcpServer. Pro Android můžete volitelně nastavit$ANDROID_HOMEna platnou cestu Android SDK.
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. Protože se dotnet-dsrouter používá přesměrování portů, stejný scénář funguje pro aplikace spuštěné v místním emulátoru i na fyzickém zařízení připojeném přes USB.
dotnet-dsrouter se pokusí automaticky vyhledat Android SDK a adb je nutný pro nastavení přesměrování portů. Volitelně můžete nastavit $ANDROID_HOME, abyste určili cestu k Android SDK.
Spusťte dotnet-dsrouter v režimu serveru:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &Nastavte proměnnou prostředí
DOTNET_DiagnosticPortspomocí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,suspendproměnné prostředí a doItemGrouppřidejte následující položky:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>Je také možné nastavit
DOTNET_DiagnosticPortspomocí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=truedo nástroje MSBuild. Vzhledem k tomu, že je aplikace nakonfigurovaná tak, aby se pozastavila při startu, připojí se zpět kdotnet-dsrouterposluchači TCP/IP běžícímu na127.0.0.1:9000a bude čekat na připojení diagnostických nástrojů, než pokračuje v provádění aplikace.Spusťte v režimu shromažďování, připojte
dotnet-tracese kdotnet-dsrouterserveru 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 skrze dotnet-dsrouter do 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 připojen k jedné spuštěné aplikaci v daném okamžiku. 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ž skončíte s použitím dotnet-dsrouter, ukončete aplikaci stisknutím kláves Q nebo Ctrl + C.
Note
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.
Note
Příkladem je port TCP/IP 9000. Můžete použít libovolný bezplatný port TCP/IP.
Note
Unix Domain Socket ~/mylocalport je jen příklad. Lze použít libovolnou bezplatnou cestu k souboru Unix Domain Socket.
Zachycení stopy pomocí dotnet-trace z aplikace .NET běžící 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 nosuspendDOTNET_DiagnosticPorts prostředí a spustit aplikaci v nosuspend režimu.