dotnet-dsrouter

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 , použijte příkaz dotnet tool install.

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|--help

    Zobrazuje nápovědu k příkazovému řádku.

  • --version

    Zobrazí verzi dotnet-dsrouter ná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-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 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 Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Pro Android můžete volitelně nastavit $ANDROID_HOME na 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 Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Pro Android můžete volitelně nastavit $ANDROID_HOME na 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 na 127.0.0.1, [::1], adresu IPv4, adresu IPv6 a adresy názvu hostitele. Pomocí DOTNET_DiagnosticPorts promě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 Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Pro Android můžete volitelně nastavit $ANDROID_HOME na 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řipojit 127.0.0.1, [::1], IPv4 adresy, adresy IPv6, adresy hostitelů. Spusťte modul runtime pomocí DOTNET_DiagnosticPorts promě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 Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Pro Android můžete volitelně nastavit $ANDROID_HOME na 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_DiagnosticPorts 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 souboru DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend proměnné prostředí a do ItemGroup přidejte následující 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 do nástroje MSBuild. Vzhledem k tomu, že je aplikace nakonfigurovaná tak, aby se pozastavila při startu, připojí se zpět k dotnet-dsrouter posluchači TCP/IP běžícímu na 127.0.0.1:9000 a 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-trace se k dotnet-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 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.

Viz také