Udostępnij za pośrednictwem


dotnet-dsrouter

Ten artykuł dotyczy: ✔️ zestaw .NET 6.0 SDK i nowsze wersje

Instalowanie

Aby zainstalować najnowszą wersję dotnet-dsrouterpakietu NuGet, użyj polecenia dotnet tool install :

dotnet tool install --global dotnet-dsrouter

Streszczenie

dotnet-dsrouter [-?, -h, --help] [--version] <command>

opis

Narzędzie dotnet-dsrouter diagnostyczne umożliwia łączenie narzędzi diagnostycznych, takich jak dotnet-trace i dotnet-counters z aplikacjami .NET uruchomionymi w systemach Android, iOS i tvOS, niezależnie od tego, czy są one uruchomione jako emulator, symulator, czy na samym urządzeniu. Narzędzia diagnostyczne używają lokalnej komunikacji międzyprocesowej (IPC) (nazwanej potoku, gniazda domeny systemu Unix) do łączenia się i komunikowania się ze środowiskiem uruchomieniowym platformy .NET. Aplikacje platformy .NET działające w środowiskach w trybie piaskownicy na emulatorach, symulatorach i urządzeniach wymagają alternatywnych sposobów komunikowania się. Funkcja dotnet-dsrouter wprowadza się między istniejącymi narzędziami diagnostycznymi i aplikacjami mobilnymi platformy .NET i tworzy lokalną reprezentację aplikacji. Narzędzie dotnet-dsrouter umożliwia narzędziom diagnostycznym komunikowanie się ze zdalnym środowiskiem uruchomieniowym platformy .NET tak, jakby było uruchomione na komputerze lokalnym.

Komunikacja między narzędziami diagnostycznymi i dotnet-dsrouter używa tego samego protokołu IPC (nazwanego potoku, gniazda domeny systemu Unix) używanego podczas nawiązywania połączenia z lokalnym środowiskiem uruchomieniowym platformy .NET. dotnet-dsrouter używa protokołu TCP/IP w komunikacji ze zdalnym środowiskiem uruchomieniowym platformy .NET i obsługuje kilka różnych scenariuszy łączności w celu obsługi różnych potrzeb i wymagań używanych przez różne platformy. dotnet-dsrouter Implementuje również dodatkową obsługę, aby uprościć konfigurację łączności podczas uruchamiania w emulatorze, symulatorze i na urządzeniu fizycznym podłączonym za pośrednictwem portu USB.

Uwaga

dotnet-dsrouter jest przeznaczony do programowania i testowania i zdecydowanie zaleca się uruchamianie dotnet-dsrouter interfejsu sprzężenia zwrotnego (na przykład 127.0.0.1, [::1]). Funkcje łączności i możliwości dotnet-dsrouter przekazywania portów obsługi wszystkich scenariuszy przy użyciu lokalnego emulatora, symulatora lub urządzenia fizycznego podłączonego za pośrednictwem portu USB.

Ostrzeżenie

Powiązanie punktu końcowego serwera TCP z niczym innym niż interfejs sprzężenia zwrotnego (localhost127.0.0.1lub [::1]) nie jest zalecane. Wszystkie połączenia z punktem końcowym serwera TCP będą nieuwierzytelnione i niezaszyfrowane. dotnet-dsrouter jest przeznaczony do użytku programistycznego i powinien być uruchamiany tylko w środowiskach deweloperskich i testowych.

Szczegółowe użycie dotnet-dsrouter aplikacji mobilnych zawiera opis odpowiednich zestawów SDK platformy .NET. Ten dokument zawiera tylko kilka przykładów dotyczących uruchamiania narzędzi diagnostycznych dla aplikacji platformy .NET działającej w systemie Android. Szczegółowe informacje na temat konfiguracji i scenariuszy można znaleźć w temacie Śledzenie diagnostyczne.

Opcje

  • -?|-h|--help

    Pokazuje pomoc wiersza polecenia.

  • --version

    Wyświetla wersję dotnet-dsrouter narzędzia.

Polecenia

Polecenie
dotnet-dsrouter client-server
dotnet-dsrouter server-server
dotnet-dsrouter server-client
dotnet-dsrouter client-client

dotnet-dsrouter client-server

Uruchom serwer diagnostyczny aplikacji platformy .NET routingu lokalnego serwera IPC i zdalnego klienta TCP. Router jest skonfigurowany przy użyciu klienta IPC (łączenie serwera IPC narzędzia diagnostycznego) i serwera TCP/IP (akceptującego klienta TCP środowiska uruchomieniowego).

Streszczenie

dotnet-dsrouter client-server
    [-ipcc|--ipc-client <ipcClient>]
    [-tcps|--tcp-server <tcpServer>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opcje

  • -ipcc, --ipc-client <ipcClient>

    Określa adres IPC serwera diagnostyki narzędzia diagnostycznego (--diagnostic-port argument). Router łączy się z serwerem IPC narzędzia diagnostycznego podczas ustanawiania nowej trasy między środowiskiem uruchomieniowym a narzędziem diagnostycznym.

  • -tcps, --tcp-server <tcpServer>

    Określa adres TCP/IP routera przy użyciu formatu [host]:[port]. Router może powiązać jeden (127.0.0.1, , [::1], 0.0.0.0[::], iPv4, adres IPv6, nazwa hosta) lub wszystkie interfejsy (*). Uruchamia środowisko uruchomieniowe przy użyciu zmiennej środowiskowej DOTNET_DiagnosticPorts i łączy serwer TCP routera podczas uruchamiania.

  • -rt, --runtime-timeout <runtimeTimeout>

    Automatycznie wyłącza router, jeśli żadne środowisko uruchomieniowe nie łączy się z nim przed upływem określonego limitu czasu (w sekundach). Jeśli nie zostanie określony, router nie wyzwoli automatycznego zamknięcia.

  • -v, --verbose <verbose>

    Włącza pełne rejestrowanie (debugowanie|trace).

  • -fp, --forward-port <forwardPort>

    Włącza przekazywanie portów. Wartości są Android lub iOS dla TcpClient, i tylko Android dla TcpServer. Pamiętaj, aby ustawić przed ANDROID_SDK_ROOT użyciem tej opcji w systemie Android.

dotnet-dsrouter server-server

Uruchom serwer diagnostyczny aplikacji .NET routingu lokalnego klienta IPC i zdalnego klienta TCP. Router jest skonfigurowany przy użyciu serwera IPC (nawiązywania połączenia za pomocą narzędzi diagnostycznych) i serwera TCP/IP (akceptującego klienta TCP środowiska uruchomieniowego).

Streszczenie

dotnet-dsrouter server-server
    [-ipcs|--ipc-server <ipcServer>]
    [-tcps|--tcp-server <tcpServer>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opcje

  • -ipcs, --ipc-server <ipcServer>

    Adres IPC serwera diagnostyki do kierowania. Router akceptuje połączenia IPC z narzędzi diagnostycznych określających nową trasę między środowiskiem uruchomieniowym a narzędziem diagnostycznym. Jeśli nie zostanie określony, router będzie używać domyślnej ścieżki serwera diagnostyki IPC.

  • -tcps, --tcp-server <tcpServer>

    Adres TCP/IP routera w formacie [host]:[port]. Router może powiązać jeden (127.0.0.1, , [::1], 0.0.0.0[::], iPv4, adres IPv6, nazwa hosta) lub wszystkie interfejsy (*). Uruchom środowisko uruchomieniowe przy użyciu DOTNET_DiagnosticPorts zmiennej środowiskowej, łącząc serwer TCP routera podczas uruchamiania.

  • -rt, --runtime-timeout <runtimeTimeout>

    Automatycznie wyłącza router, jeśli żadne środowisko uruchomieniowe nie łączy się z nim przed upływem określonego limitu czasu (w sekundach). Jeśli nie zostanie określony, router nie wyzwoli automatycznego zamknięcia.

  • -v, --verbose <verbose>

    Włącza pełne rejestrowanie (debugowanie|trace).

  • -fp, --forward-port <forwardPort>

    Włącza przekazywanie portów. Wartości są Android lub iOS dla TcpClient, i tylko Android dla TcpServer. Pamiętaj, aby ustawić przed ANDROID_SDK_ROOT użyciem tej opcji w systemie Android.

dotnet-dsrouter server-client

Uruchom serwer diagnostyczny aplikacji .NET routingu lokalnego klienta IPC i zdalnego serwera TCP. Router jest skonfigurowany przy użyciu serwera IPC (nawiązywania połączenia za pomocą narzędzi diagnostycznych) i klienta TCP/IP (łączenie środowiska uruchomieniowego serwera TCP).

Streszczenie

dotnet-dsrouter server-client
    [-ipcs|--ipc-server <ipcServer>]
    [-tcpc|--tcp-client <tcpClient>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opcje

  • -ipcs, --ipc-server <ipcServer>

    Adres IPC serwera diagnostyki do kierowania. Router akceptuje połączenia IPC z narzędzi diagnostycznych ustanawiając nową trasę między środowiskiem uruchomieniowym a narzędziem diagnostycznym. Jeśli nie zostanie określony, router będzie używać domyślnej ścieżki serwera diagnostyki IPC.

  • -tcpc, --tcp-client <tcpClient>

    Adres TCP/IP środowiska uruchomieniowego w formacie [host]:[port]. Router może łączyć 127.0.0.1, , [::1]adres IPv4, adres IPv6, adresy nazwy hosta. Uruchom środowisko uruchomieniowe przy użyciu DOTNET_DiagnosticPorts zmiennej środowiskowej, aby skonfigurować odbiornik.

  • -rt, --runtime-timeout <runtimeTimeout>

    Automatycznie wyłącza router, jeśli żadne środowisko uruchomieniowe nie łączy się z nim przed upływem określonego limitu czasu (w sekundach). Jeśli nie zostanie określony, router nie wyzwoli automatycznego zamknięcia.

  • -v, --verbose <verbose>

    Włącza pełne rejestrowanie (debugowanie|trace).

  • -fp, --forward-port <forwardPort>

    Włącza przekazywanie portów. Wartości są Android lub iOS dla TcpClient, i tylko Android dla TcpServer. Pamiętaj, aby ustawić przed ANDROID_SDK_ROOT użyciem tej opcji w systemie Android.

dotnet-dsrouter client-client

Uruchom serwer diagnostyczny aplikacji .NET routingu lokalnego serwera IPC i zdalnego serwera TCP. Router jest skonfigurowany przy użyciu klienta IPC (łączenie serwera IPC narzędzia diagnostycznego) i klienta TCP/IP (łączenie środowiska uruchomieniowego serwera TCP).

Streszczenie

dotnet-dsrouter client-client
    [-ipcc|--ipc-client <ipcClient>]
    [-tcpc|--tcp-client <tcpClient>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opcje

  • -ipcc, --ipc-client <ipcClient>

    Adres IPC serwera diagnostyki narzędzia diagnostycznego (--diagnostic-port argument). Router łączy się z serwerem IPC narzędzia diagnostycznego podczas ustanawiania nowej trasy między środowiskiem uruchomieniowym i narzędziem diagnostycznym.

  • -tcpc, --tcp-client <tcpClient>

    Adres TCP/IP środowiska uruchomieniowego w formacie [host]:[port]. Router może łączyć 127.0.0.1, , [::1]adres IPv4, adres IPv6, adresy nazwy hosta. Uruchom środowisko uruchomieniowe przy użyciu DOTNET_DiagnosticPorts zmiennej środowiskowej, aby skonfigurować odbiornik.

  • -rt, --runtime-timeout <runtimeTimeout>

    Automatycznie wyłącza router, jeśli żadne środowisko uruchomieniowe nie łączy się z nim przed upływem określonego limitu czasu (w sekundach). Jeśli nie zostanie określony, router nie wyzwoli automatycznego zamknięcia.

  • -v, --verbose <verbose>

    Włącza pełne rejestrowanie (debugowanie|trace).

  • -fp, --forward-port <forwardPort>

    Włącza przekazywanie portów. Wartości są Android lub iOS dla TcpClient, i tylko Android dla TcpServer. Pamiętaj, aby ustawić przed ANDROID_SDK_ROOT użyciem tej opcji w systemie Android.

Zbieranie śledzenia uruchamiania przy użyciu narzędzia dotnet-trace z aplikacji .NET uruchomionej w systemie Android

Czasami przydatne może być zebranie śladu aplikacji od jej uruchomienia. Poniższe kroki ilustrują proces określania celu aplikacji .NET działającej w systemie Android. Ponieważ dotnet-dsrouter jest uruchamiany przy użyciu przekazywania portów, ten sam scenariusz działa w odniesieniu do aplikacji działających w emulatorze lokalnym i na urządzeniu fizycznym podłączonym za pośrednictwem portu USB. Upewnij się, że ustawiono ANDROID_SDK_ROOT opcję przed użyciem tej opcji lub dotnet-dsrouter nie będzie można znaleźć adb elementów potrzebnych do skonfigurowania przekazywania portów.

  • Uruchom narzędzie dotnet-dsrouter w trybie serwer-serwer:

    dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
    
  • Ustaw DOTNET_DiagnosticPorts zmienną środowiskową przy użyciu polecenia AndroidEnvironment:

    Utwórz plik w tym samym katalogu co plik csproj przy użyciu nazwy, takiej jak , dodaj zmienne środowiskowe do pliku app.env i dołącz następujące elementy DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend do ItemGroup:

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

    Można również ustawić DOTNET_DiagnosticPorts przy użyciu polecenia adb shell setprop:

    adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
    
  • Skompiluj i uruchom aplikację przy użyciu zestawu .NET Android SDK i włącz śledzenie, przekazując /p:AndroidEnableProfiler=true do programu MSBuild. Ponieważ aplikacja została skonfigurowana do wstrzymania podczas uruchamiania, połączy się z odbiornikiem dotnet-dsrouter TCP/IP uruchomionym w systemie 127.0.0.1:9000 i zaczeka na nawiązanie połączenia z narzędziami diagnostycznymi przed wznowieniem wykonywania aplikacji.

  • Rozpocznij dotnet-trace w trybie zbierania, łącząc się dotnet-dsrouter z serwerem IPC, ~/mylocalport:

      dotnet-trace collect --diagnostic-port ~/mylocalport,connect
    

dotnet-trace uruchomi sesję śledzenia i wznowi aplikację, która będzie teraz kontynuowana. Strumień zdarzeń zacznie przepływać z aplikacji mobilnej do dotnet-dsrouterdotnet-trace pliku nettrace. Po zakończeniu śledzenia naciśnij Enter , aby upewnić się, że sesja śledzenia jest poprawnie zamknięta, upewniając się, że plik nettrace zawiera wszystkie potrzebne dane przed zamknięciem aplikacji.

W miarę upływu czasu można uruchomić kilka sesji śledzenia dla tej samej uruchomionej aplikacji, pozostawić dotnet-dsrouter uruchomioną i ponownie uruchomić dotnet-trace , gdy jest potrzebna nowa sesja śledzenia.

dotnet-dsrouter Można pozostawić działanie w tle i ponownie użyć, jeśli aplikacja jest skonfigurowana do nawiązywania połączenia przy użyciu jego adresu i portu.

dotnet-dsrouter jest powiązany z jedną uruchomioną aplikacją w dowolnym momencie. Jeśli istnieje potrzeba śledzenia kilku różnych aplikacji jednocześnie, każda aplikacja musi używać własnego dotnet-dsrouter wystąpienia, konfigurując unikatową parę adresów IPC, TCP/IP i dotnet-dsrouter konfigurując różne wystąpienia aplikacji w celu nawiązania połączenia z jego unikatowym dotnet-dsrouter wystąpieniem.

Jeśli dotnet-dsrouter program jest uruchamiany z systemem Android i --forward-port serweremadb, emulator lub urządzenie zostanie uruchomione ponownie, wszystkie dotnet-dsrouter wystąpienia muszą zostać ponownie uruchomione, a także przywrócić reguły przekazywania portów.

Po zakończeniu korzystania z dotnet-dsrouternaciśnij Q lub Ctrl + C, aby zamknąć aplikację.

Uwaga

Podczas uruchamiania dotnet-dsrouter w systemie Windows użyje nazwanych potoków dla kanału IPC. Zastąp ciąg ~/mylocalport ciągiem mylocalport w powyższych przykładach podczas uruchamiania w systemie Windows.

Uwaga

Port TCP/IP 9000 jest tylko przykładem. Można użyć dowolnego bezpłatnego portu TCP/IP.

Uwaga

Gniazdo domeny systemu Unix ~/mylocalport jest tylko przykładem. Można użyć dowolnej bezpłatnej ścieżki pliku gniazda domeny systemu Unix.

Zbieranie śladu przy użyciu narzędzia dotnet-trace z aplikacji .NET uruchomionej w systemie Android

Jeśli podczas uruchamiania aplikacji nie ma potrzeby zbierania danych śledzenia, możliwe jest uruchomienie aplikacji w nosuspend trybie, co oznacza, że środowisko uruchomieniowe nie będzie blokować podczas uruchamiania oczekiwania na nawiązanie połączenia z narzędziami diagnostycznymi przed wznowieniem wykonywania. Większość opisanego powyżej scenariusza dotyczy tego trybu, a także po prostu zastąp suspend element w nosuspendDOTNET_DiagnosticPorts zmiennej środowiskowej, aby uruchomić aplikację w nosuspend trybie.

Zobacz też