dotnet-dsrouter
Ten artykuł dotyczy: ✔️ zestaw .NET 6.0 SDK i nowsze wersje
Instalowanie
Aby zainstalować najnowszą wersję dotnet-dsrouter
pakietu 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 (localhost
127.0.0.1
lub [::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 środowiskowejDOTNET_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
lubiOS
dlaTcpClient
, i tylkoAndroid
dlaTcpServer
. Pamiętaj, aby ustawić przedANDROID_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życiuDOTNET_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
lubiOS
dlaTcpClient
, i tylkoAndroid
dlaTcpServer
. Pamiętaj, aby ustawić przedANDROID_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życiuDOTNET_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
lubiOS
dlaTcpClient
, i tylkoAndroid
dlaTcpServer
. Pamiętaj, aby ustawić przedANDROID_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życiuDOTNET_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
lubiOS
dlaTcpClient
, i tylkoAndroid
dlaTcpServer
. Pamiętaj, aby ustawić przedANDROID_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 poleceniaAndroidEnvironment
: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 elementyDOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
doItemGroup
:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Można również ustawić
DOTNET_DiagnosticPorts
przy użyciu poleceniaadb 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 odbiornikiemdotnet-dsrouter
TCP/IP uruchomionym w systemie127.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-dsrouter
dotnet-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-dsrouter
naciś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 nosuspend
DOTNET_DiagnosticPorts
zmiennej środowiskowej, aby uruchomić aplikację w nosuspend
trybie.