dotnet-dsrouter
Este artículo se aplica a: ✔️ SDK de .NET 6.0 y versiones posteriores
Instalar
Para instalar la versión de lanzamiento más reciente del paquete NuGet de dotnet-dsrouter
, use el comando dotnet tool install:
dotnet tool install --global dotnet-dsrouter
Sinopsis
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Descripción
dotnet-dsrouter
conecta herramientas de diagnóstico como dotnet-trace
y dotnet-counters
a aplicaciones .NET que se ejecutan en Android, iOS y tvOS, independientemente de si se ejecutan como emulador, simulador o en el propio dispositivo. Las herramientas de diagnóstico usan la comunicación entre procesos (IPC) local (canalización con nombre, socket de dominio de Unix) para conectarse y comunicarse con un entorno de ejecución de .NET. Las aplicaciones .NET que se ejecutan en entornos de espacio aislado en emuladores, simuladores y dispositivos necesitan formas alternativas de comunicarse. dotnet-dsrouter
se inserta entre las herramientas de diagnóstico existentes y las aplicaciones móviles de .NET y crea una representación local de la aplicación. dotnet-dsrouter
permite que las herramientas de diagnóstico se comuniquen con un entorno de ejecución remoto de .NET como si se hubiera estado ejecutando en la máquina local.
La comunicación entre las herramientas de diagnóstico y dotnet-dsrouter
usa el mismo IPC (canalización con nombre, socket de dominio de Unix) que se usa al conectarse con un entorno de ejecución de .NET local. dotnet-dsrouter
usa TCP/IP en su comunicación con el entorno de ejecución remoto de .NET y admite varios escenarios de conectividad diferentes para controlar las diferentes necesidades y requisitos que usan las distintas plataformas. dotnet-dsrouter
también implementa compatibilidad adicional para simplificar la configuración de conectividad cuando se ejecuta en el emulador, el simulador y en un dispositivo físico conectado a través de USB.
Nota:
dotnet-dsrouter
está pensado para desarrollo y pruebas y se recomienda encarecidamente ejecutar dotnet-dsrouter
sobre la interfaz de bucle invertido (por ejemplo, 127.0.0.1
, [::1]
). Las características de conectividad y las funcionalidades de reenvío de puertos de dotnet-dsrouter
controla todos los escenarios mediante el emulador local, el simulador o el dispositivo físico conectado a través de USB.
Advertencia
No se recomienda enlazar el punto de conexión del servidor TCP a nada excepto la interfaz de bucle invertido (localhost
, 127.0.0.1
o [::1]
). Las conexiones hacia el punto de conexión de servidor TCP estarán sin autenticar y sin cifrar. dotnet-dsrouter
está diseñado para su uso en el desarrollo y solo debe ejecutarse en entornos de desarrollo y pruebas.
El uso detallado de dotnet-dsrouter
junto con las aplicaciones móviles se describe mediante los respectivos SDK de .NET. Este documento solo incluirá un par de ejemplos sobre cómo ejecutar herramientas de diagnóstico en aplicaciones .NET que se ejecutan en Android. Para información detallada sobre la configuración y los escenarios, consulte Seguimiento de diagnósticos.
Opciones
-?|-h|--help
Muestra la ayuda de la línea de comandos.
--version
Muestra la versión del servicio
dotnet-dsrouter
.
Comandos
Comando |
---|
dotnet-dsrouter client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Inicie un servidor de diagnóstico de aplicaciones .NET que enrute el servidor IPC local y el cliente TCP remoto. El enrutador se configura mediante un cliente IPC (que conecta el servidor IPC de la herramienta de diagnóstico) y un servidor TCP/IP (que acepta el cliente TCP en tiempo de ejecución).
Sinopsis
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opciones
-ipcc, --ipc-client <ipcClient>
Especifica la dirección IPC del servidor de diagnóstico de la herramienta de diagnóstico (argumento
--diagnostic-port
). El enrutador conecta el servidor IPC de la herramienta de diagnóstico al establecer una nueva ruta entre el entorno de ejecución y la herramienta de diagnóstico.-tcps, --tcp-server <tcpServer>
Especifica la dirección TCP/IP del enrutador con el formato
[host]:[port]
. El enrutador puede enlazar una interfaz (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, dirección IPv4, dirección IPv6, nombre de host) o todas las interfaces (*). Inicia el entorno de ejecución mediante la variable de entornoDOTNET_DiagnosticPorts
y conecta el servidor TCP del enrutador durante el inicio.-rt, --runtime-timeout <runtimeTimeout>
Apaga automáticamente el enrutador si ningún entorno de ejecución se conecta a él antes del tiempo de espera especificado (segundos). Si no se especifica, el enrutador no desencadenará un apagado automático.
-v, --verbose <verbose>
Habilita el registro detallado (debug|trace).
-fp, --forward-port <forwardPort>
Habilita el reenvío de puertos. Los valores son
Android
oiOS
paraTcpClient
y soloAndroid
paraTcpServer
. Asegúrese de establecerANDROID_SDK_ROOT
antes de usar esta opción en Android.
dotnet-dsrouter server-server
Inicie un servidor de diagnóstico de aplicaciones .NET que enrute el cliente IPC local y el cliente TCP remoto. El enrutador se configura mediante un servidor IPC (al que se conecta mediante herramientas de diagnóstico) y un servidor TCP/IP (que acepta el cliente TCP en tiempo de ejecución).
Sinopsis
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opciones
-ipcs, --ipc-server <ipcServer>
: la dirección IPC del servidor de diagnóstico que se enruta. El enrutador acepta conexiones IPC de herramientas de diagnóstico que establecen una nueva ruta entre el entorno de ejecución y la herramienta de diagnóstico. Si no se especifica, el enrutador usará la ruta de acceso predeterminada del servidor de diagnóstico de IPC.
-tcps, --tcp-server <tcpServer>
Dirección TCP/IP del enrutador con el formato
[host]:[port]
. El enrutador puede enlazar una interfaz (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, dirección IPv4, dirección IPv6, nombre de host) o todas las interfaces (*). Inicie el entorno de ejecución mediante la variable de entornoDOTNET_DiagnosticPorts
, que conecta el servidor TCP del enrutador durante el inicio.-rt, --runtime-timeout <runtimeTimeout>
Apaga automáticamente el enrutador si ningún entorno de ejecución se conecta a él antes del tiempo de espera especificado (segundos). Si no se especifica, el enrutador no desencadenará un apagado automático.
-v, --verbose <verbose>
Habilita el registro detallado (debug|trace).
-fp, --forward-port <forwardPort>
Habilita el reenvío de puertos. Los valores son
Android
oiOS
paraTcpClient
y soloAndroid
paraTcpServer
. Asegúrese de establecerANDROID_SDK_ROOT
antes de usar esta opción en Android.
dotnet-dsrouter server-client
Inicie un servidor de diagnóstico de aplicaciones .NET que enrute el cliente IPC local y el servidor TCP remoto. El enrutador se configura mediante un servidor IPC (al que se conecta mediante herramientas de diagnóstico) y un cliente TCP/IP (que conecta el servidor TCP en tiempo de ejecución).
Sinopsis
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opciones
-ipcs, --ipc-server <ipcServer>
: la dirección IPC del servidor de diagnóstico que se enruta. El enrutador acepta conexiones IPC de herramientas de diagnóstico que establecen una nueva ruta entre el entorno de ejecución y la herramienta de diagnóstico. Si no se especifica, el enrutador usará la ruta de acceso predeterminada del servidor de diagnóstico de IPC.
-tcpc, --tcp-client <tcpClient>
Dirección TCP/IP del entorno de ejecución con el formato
[host]:[port]
. El enrutador puede conectar127.0.0.1
,[::1]
, la dirección IPv4, la dirección IPv6 y las direcciones de nombre de host. Inicie el entorno de ejecución mediante la variable de entornoDOTNET_DiagnosticPorts
para configurar el cliente de escucha.-rt, --runtime-timeout <runtimeTimeout>
Apaga automáticamente el enrutador si ningún entorno de ejecución se conecta a él antes del tiempo de espera especificado (segundos). Si no se especifica, el enrutador no desencadenará un apagado automático.
-v, --verbose <verbose>
Habilita el registro detallado (debug|trace).
-fp, --forward-port <forwardPort>
Habilita el reenvío de puertos. Los valores son
Android
oiOS
paraTcpClient
y soloAndroid
paraTcpServer
. Asegúrese de establecerANDROID_SDK_ROOT
antes de usar esta opción en Android.
dotnet-dsrouter client-client
Inicie un servidor de diagnóstico de aplicaciones .NET que enrute el servidor IPC local y el servidor TCP remoto. El enrutador se configura mediante un cliente IPC (que conecta el servidor IPC de la herramienta de diagnóstico) y un cliente TCP/IP (que conecta el servidor TCP en tiempo de ejecución).
Sinopsis
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opciones
-ipcc, --ipc-client <ipcClient>
: la dirección IPC del servidor de diagnóstico de la herramienta de diagnóstico (
--diagnostic-port argument
). El enrutador conecta el servidor IPC de la herramienta de diagnóstico al establecer una nueva ruta entre el entorno de ejecución y la herramienta de diagnóstico.-tcpc, --tcp-client <tcpClient>
Dirección TCP/IP del entorno de ejecución con el formato
[host]:[port]
. El enrutador puede conectar127.0.0.1
,[::1]
, la dirección IPv4, la dirección IPv6 y las direcciones de nombre de host. Inicie el entorno de ejecución mediante la variable de entornoDOTNET_DiagnosticPorts
para configurar el cliente de escucha.-rt, --runtime-timeout <runtimeTimeout>
Apaga automáticamente el enrutador si ningún entorno de ejecución se conecta a él antes del tiempo de espera especificado (segundos). Si no se especifica, el enrutador no desencadenará un apagado automático.
-v, --verbose <verbose>
Habilita el registro detallado (debug|trace).
-fp, --forward-port <forwardPort>
Habilita el reenvío de puertos. Los valores son
Android
oiOS
paraTcpClient
y soloAndroid
paraTcpServer
. Asegúrese de establecerANDROID_SDK_ROOT
antes de usar esta opción en Android.
Recopilación de un seguimiento de inicio mediante dotnet-trace desde una aplicación .NET que se ejecuta en Android
A veces puede ser útil recopilar un seguimiento de una aplicación desde su inicio. En los pasos siguientes se muestra el proceso de hacerlo siendo el destino una aplicación .NET que se ejecuta en Android. Puesto que dotnet-dsrouter
se ejecuta mediante el reenvío de puertos, el mismo escenario funciona en aplicaciones que se ejecutan en un emulador local y en un dispositivo físico conectado a través de USB. Asegúrese de establecer ANDROID_SDK_ROOT
antes de usar esta opción o dotnet-dsrouter
no podrá encontrar el objeto adb
necesario para configurar el reenvío de puertos.
Inicie dotnet-dsrouter en modo servidor-servidor:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Establezca la variable de entorno
DOTNET_DiagnosticPorts
conAndroidEnvironment
:Cree un archivo en el mismo directorio que .csproj con un nombre como
app.env
, agregue variables de entorno al archivo,DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
e incluya a continuaciónItemGroup
en .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
También es posible establecer
DOTNET_DiagnosticPorts
conadb shell setprop
:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Compile e inicie la aplicación mediante Android SDK de .NET y habilite el seguimiento pasando
/p:AndroidEnableProfiler=true
a MSBuild. Puesto que la aplicación se ha configurado para suspenderse durante el inicio, se conectará de nuevo al cliente de escucha TCP/IPdotnet-dsrouter
que se ejecuta en127.0.0.1:9000
y esperará a que las herramientas de diagnóstico se conecten antes de reanudar la ejecución de la aplicación.Comience
dotnet-trace
en modo de recopilación y conéctese al servidor de IPCdotnet-dsrouter
, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
iniciará una sesión de seguimiento y reanudará la aplicación que ahora continuará ejecutándose. Una secuencia de eventos comenzará a fluir desde la aplicación móvil hasta dotnet-dsrouter
en el archivo nettrace de dotnet-trace
. Cuando haya terminado el seguimiento, presione Entrar para asegurarse de que la sesión de seguimiento está correctamente cerrada y asegúrese de que el archivo nettrace incluya todos los datos necesarios antes de que se cierre la aplicación.
Es posible ejecutar varias sesiones de seguimiento en la misma aplicación en ejecución a lo largo del tiempo, dejar dotnet-dsrouter
en ejecución y volver a ejecutar dotnet-trace
cuando se necesite una nueva sesión de seguimiento.
dotnet-dsrouter
se puede dejar en ejecución en segundo plano y volverse a utilizar si una aplicación está configurada para conectarse mediante su dirección y puerto.
dotnet-dsrouter
está vinculado a una aplicación en ejecución en cualquier momento. Si hay que hacer un seguimiento de varias aplicaciones diferentes al mismo tiempo, cada aplicación debe usar su propia instancia de dotnet-dsrouter
; para ello, configure un par de direcciones IPC, TCP/IP único en dotnet-dsrouter
y configure distintas instancias de aplicación para volver a conectarse a su instancia de dotnet-dsrouter
única.
Si se ejecuta dotnet-dsrouter
con --forward-port
dirigido a Android y se reinicia el servidor, el emulador o el dispositivo adb
, todas las instancias de dotnet-dsrouter
deben reiniciarse también para restaurar las reglas de reenvío de puertos.
Cuando se hace con dotnet-dsrouter
, presione Q o Ctrl + C para salir de la aplicación.
Nota:
Cuando se ejecuta dotnet-dsrouter
en Windows, se usarán canalizaciones con nombre para su canal IPC. Reemplace ~/mylocalport por mylocalport en los ejemplos anteriores cuando se ejecuten en Windows.
Nota:
El puerto TCP/IP 9000 es solo un ejemplo. Se puede usar cualquier puerto TCP/IP libre.
Nota:
El socket de dominio de Unix ~/mylocalport es solo un ejemplo. Se puede usar cualquier ruta de acceso de archivo de socket de dominio Unix libre.
Recopilación de un seguimiento mediante dotnet-trace desde una aplicación .NET que se ejecuta en Android
Si no es necesario recopilar un seguimiento durante el inicio de la aplicación, es posible iniciar la aplicación en modo nosuspend
, lo que significa que el entorno de ejecución no se bloqueará durante el inicio a la espera de que las herramientas de diagnóstico se conecten antes de reanudar la ejecución. La mayoría del escenario descrito anteriormente también se aplica a este modo; solo tiene que reemplazar suspend
por nosuspend
en la variable de entorno DOTNET_DiagnosticPorts
para iniciar la aplicación en modo nosuspend
.