Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo si applica a: ✓ .NET Core 6.0.x SDK e versioni successive
Installare
Per installare la versione più recente del dotnet-dsrouterpacchetto NuGet, usare il comando dotnet tool install:
dotnet tool install --global dotnet-dsrouter
Riepilogo
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Descrizione
dotnet-dsrouter connette strumenti di diagnostica come dotnet-trace e dotnet-counters ad applicazioni .NET in esecuzione in Android, iOS e tvOS, indipendentemente dal fatto che siano in esecuzione come emulatore, simulatore o nel dispositivo stesso. Gli strumenti di diagnostica usano la comunicazione tra processi locali (IPC) (Named Pipe, Unix Domain Socket) per connettersi e comunicare con un runtime .NET. Le applicazioni .NET in esecuzione in ambienti in modalità sandbox in emulatori, simulatori e dispositivi richiedono modi alternativi per comunicare.
dotnet-dsrouter si inserisce tra gli strumenti di diagnostica esistenti e le applicazioni per dispositivi mobili .NET e crea una rappresentazione locale dell'applicazione.
dotnet-dsrouter consente agli strumenti di diagnostica di comunicare con un runtime .NET remoto come se fosse in esecuzione nel computer locale.
La comunicazione tra gli strumenti di diagnostica e dotnet-dsrouter usa lo stesso IPC (Named Pipe, Unix Domain Socket) usato per la connessione a un runtime .NET locale.
dotnet-dsrouter usa TCP/IP nella comunicazione con il runtime .NET remoto e supporta diversi scenari di connettività per gestire esigenze e requisiti diversi usati da piattaforme diverse.
dotnet-dsrouter implementa inoltre supporto aggiuntivo per semplificare la configurazione della connettività durante l'esecuzione nell'emulatore, nel simulatore e nel dispositivo fisico collegato tramite USB.
Nota
dotnet-dsrouterè destinato allo sviluppo e al test ed è consigliabile eseguire dotnet-dsrouter tramite l'interfaccia di loopback ( ad esempio, 127.0.0.1, [::1]). Le funzionalità di connettività e le funzionalità di port forwarding di dotnet-dsrouter gestiscono tutti gli scenari usando emulatore locale, simulatore o dispositivo fisico connesso tramite USB.
Avviso
L'associazione dell'endpoint server TCP a qualsiasi elemento tranne l'interfaccia loopback (localhost, 127.0.0.1 o [::1]) non è consigliata. Tutte le connessioni verso l'endpoint server TCP non verranno autenticate e non crittografate.
dotnet-dsrouter è destinato all'uso dello sviluppo e deve essere eseguito solo in ambienti di sviluppo e test.
L'utilizzo dettagliato di dotnet-dsrouter insieme alle applicazioni per dispositivi mobili è descritto dai rispettivi SDK .NET. Questo documento includerà solo un paio di esempi su come eseguire gli strumenti di diagnostica sull'applicazione .NET in esecuzione in Android. Per informazioni dettagliate sulla configurazione e sugli scenari, vedere Analisi diagnostica.
Opzioni
-?|-h|--helpMostra la Guida della riga di comando.
--versionVisualizza la versione del servizio
dotnet-dsrouter.
Comandi
| Comando |
|---|
| dotnet-dsrouter client-server |
| dotnet-dsrouter server-server |
| dotnet-dsrouter server-client |
| dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Avviare un server di diagnostica applicazioni .NET che instrada il server IPC locale e il client TCP remoto. Il router viene configurato usando un client IPC (connessione del server IPC dello strumento di diagnostica) e un server TCP/IP (accettando il client TCP di runtime).
Riepilogo
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opzioni
-ipcc, --ipc-client <ipcClient>Specifica l'indirizzo IPC del server di diagnostica dello strumento di diagnostica (argomento
--diagnostic-port). Il router si connette al server IPC dello strumento di diagnostica quando si stabilisce una nuova route tra il runtime e lo strumento di diagnostica.-tcps, --tcp-server <tcpServer>Specifica l'indirizzo TCP/IP del router usando il formato
[host]:[port]. Il router può associare uno (127.0.0.1,[::1],0.0.0.0,[::], indirizzo IPv4, indirizzo IPv6, nome host) o tutte le interfacce (*) . Avvia il runtime usando la variabile di ambienteDOTNET_DiagnosticPortse connette il server TCP del router durante l'avvio.-rt, --runtime-timeout <runtimeTimeout>Arresta automaticamente il router se nessun runtime si connette prima del timeout specificato (secondi). Se non specificato, il router non attiverà un arresto automatico.
-v, --verbose <verbose>Abilita la registrazione dettagliata (debug|traccia).
-fp, --forward-port <forwardPort>Abilita il port forwarding. I valori sono
AndroidoiOSperTcpCliente soloAndroidperTcpServer. Assicurarsi di impostareANDROID_SDK_ROOTprima di usare questa opzione in Android.
dotnet-dsrouter server-server
Avviare un server di diagnostica applicazioni .NET che instrada il server IPC locale e il client TCP remoto. Il router viene configurato usando un server IPC (collegandosi con strumenti di diagnostica) e un server TCP/IP (accettando il client TCP di runtime).
Riepilogo
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opzioni
-ipcs, --ipc-server <ipcServer>Indirizzo IPC del server di diagnostica da instradare. Il router accetta le connessioni IPC dagli strumenti di diagnostica che stabiliscono una nuova route tra il runtime e lo strumento di diagnostica. Se non specificato, il router userà il percorso del server di diagnostica IPC predefinito.
-tcps, --tcp-server <tcpServer>Indirizzo TCP/IP del router nel formato
[host]:[port]. Il router può associare uno (127.0.0.1,[::1],0.0.0.0,[::], indirizzo IPv4, indirizzo IPv6, nome host) o tutte le interfacce (*) . Avviare il runtime usando la variabile di ambienteDOTNET_DiagnosticPorts, connettendo il server TCP del router durante l'avvio.-rt, --runtime-timeout <runtimeTimeout>Arresta automaticamente il router se nessun runtime si connette prima del timeout specificato (secondi). Se non specificato, il router non attiverà un arresto automatico.
-v, --verbose <verbose>Abilita la registrazione dettagliata (debug|traccia).
-fp, --forward-port <forwardPort>Abilita il port forwarding. I valori sono
AndroidoiOSperTcpCliente soloAndroidperTcpServer. Assicurarsi di impostareANDROID_SDK_ROOTprima di usare questa opzione in Android.
dotnet-dsrouter server-clienti
Avviare un server di diagnostica applicazioni .NET che instrada il server IPC locale e il server TCP remoto. Il router viene configurato usando un server IPC (collegandosi con strumenti di diagnostica) e un client TCP/IP (collegandosi al server TCP di runtime).
Riepilogo
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opzioni
-ipcs, --ipc-server <ipcServer>Indirizzo IPC del server di diagnostica da instradare. Il router accetta le connessioni IPC dagli strumenti di diagnostica che stabiliscono una nuova route tra il runtime e lo strumento di diagnostica. Se non specificato, il router userà il percorso del server di diagnostica IPC predefinito.
-tcpc, --tcp-client <tcpClient>Indirizzo TCP/IP di runtime nel formato
[host]:[port]. Il router può connettere127.0.0.1,[::1], indirizzo IPv4, indirizzo IPv6, indirizzi hostname. Avviare il runtime usandoDOTNET_DiagnosticPortsla variabile di ambiente per configurare il listener.-rt, --runtime-timeout <runtimeTimeout>Arresta automaticamente il router se nessun runtime si connette prima del timeout specificato (secondi). Se non specificato, il router non attiverà un arresto automatico.
-v, --verbose <verbose>Abilita la registrazione dettagliata (debug|traccia).
-fp, --forward-port <forwardPort>Abilita il port forwarding. I valori sono
AndroidoiOSperTcpCliente soloAndroidperTcpServer. Assicurarsi di impostareANDROID_SDK_ROOTprima di usare questa opzione in Android.
dotnet-dsrouter client-client
Avviare un server di diagnostica applicazioni .NET che instrada il server IPC locale e il server TCP remoto. Il router viene configurato usando un client IPC (connessione del server IPC dello strumento di diagnostica) e un client TCP/IP (collegandosi al server TCP di runtime).
Riepilogo
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opzioni
-ipcc, --ipc-client <ipcClient>L'indirizzo IPC del server di diagnostica dello strumento di diagnostica (
--diagnostic-port argument). Il router si connette al server IPC dello strumento di diagnostica quando si stabilisce una nuova route tra il runtime e lo strumento di diagnostica.-tcpc, --tcp-client <tcpClient>Indirizzo TCP/IP di runtime nel formato
[host]:[port]. Il router può connettere127.0.0.1,[::1], indirizzo IPv4, indirizzo IPv6, indirizzi hostname. Avviare il runtime usando la variabile di ambienteDOTNET_DiagnosticPortsper configurare listener.-rt, --runtime-timeout <runtimeTimeout>Arresta automaticamente il router se nessun runtime si connette prima del timeout specificato (secondi). Se non specificato, il router non attiverà un arresto automatico.
-v, --verbose <verbose>Abilita la registrazione dettagliata (debug|traccia).
-fp, --forward-port <forwardPort>Abilita il port forwarding. I valori sono
AndroidoiOSperTcpCliente soloAndroidperTcpServer. Assicurarsi di impostareANDROID_SDK_ROOTprima di usare questa opzione in Android.
Raccogliere una traccia di avvio usando dotnet-trace da un'applicazione .NET in esecuzione in Android
A volte può essere utile raccogliere una traccia di un'applicazione dall'avvio. I passaggi seguenti illustrano il processo di destinazione di un'applicazione .NET in esecuzione in Android. Poiché dotnet-dsrouter viene eseguito usando il port forwarding, lo stesso scenario funziona con le applicazioni in esecuzione in un emulatore locale e in un dispositivo fisico collegato tramite USB. Assicurarsi di impostare ANDROID_SDK_ROOT prima di usare questa opzione o dotnet-dsrouter non sarà in grado di trovare adb la necessità di configurare il port forwarding.
Avviare dotnet-dsrouter in modalità server:Launch dotnet-dsrouter in server-mode:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &Impostare la
DOTNET_DiagnosticPortsvariabile ambiente usandoAndroidEnvironment:Creare un file nella stessa directory del file con estensione .csproj usando un nome come
app.env, aggiungere variabili di ambiente nel fileDOTNET_DiagnosticPorts=127.0.0.1:9000,suspende includere quanto segueItemGroupin .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>È anche possibile impostare
DOTNET_DiagnosticPortsusandoadb shell setprop:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'Compilare e avviare l'applicazione usando .NET Android SDK e abilitare la traccia passando
/p:AndroidEnableProfiler=truea MSBuild. Poiché l'app è stata configurata per la sospensione all'avvio, si connetterà di nuovo aldotnet-dsrouterlistener TCP/IP in esecuzione su127.0.0.1:9000e attenderà che gli strumenti di diagnostica si connettano prima di riprendere l'esecuzione dell'applicazione.Avviare
dotnet-tracein modalità di raccolta, connettendosi aldotnet-dsrouterserver IPC, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace avvierà una sessione di traccia e riprenderà l'applicazione che continuerà a essere eseguita. Un flusso di eventi inizierà a fluire dall'applicazione per dispositivi mobili, attraverso dotnet-dsrouter il dotnet-trace file nettrace. Al termine della traccia, premere INVIO per assicurarsi che la sessione di traccia sia chiusa correttamente, assicurandosi che il file nettrace includa tutti i dati necessari prima che l'applicazione venga chiusa.
È possibile eseguire più sessioni di traccia sulla stessa applicazione in esecuzione nel corso del tempo, lasciare in dotnet-dsrouter esecuzione e rieseguire dotnet-trace quando è necessaria una nuova sessione di traccia.
dotnet-dsrouter può essere lasciato in esecuzione in background e riutilizzato se un'applicazione è configurata per la connessione usando il relativo indirizzo e porta.
dotnet-dsrouter è associato a un'applicazione in esecuzione in qualsiasi momento. Se è necessario tracciare più applicazioni diverse contemporaneamente, ogni applicazione deve usare la propria dotnet-dsrouter istanza configurando una coppia di indirizzi IPC, TCP/IP univoca in dotnet-dsrouter e configurando istanze diverse dell'applicazione per la connessione all'istanza univoca dotnet-dsrouter.
Se dotnet-dsrouter viene eseguito con --forward-port destinazione Android e adb server, emulatore o dispositivo viene riavviato, è necessario riavviare tutte le dotnet-dsrouter istanze e ripristinare le regole di inoltro delle porte.
Al termine dell'uso di dotnet-dsrouter, premere Q o CTRL + C per uscire dall'applicazione.
Nota
Quando dotnet-dsrouter è in esecuzione in Windows, userà Named Pipes per il canale IPC. Sostituire ~/mylocalport con mylocalport negli esempi precedenti durante l'esecuzione in Windows.
Nota
La porta TCP/IP 9000 è solo un esempio. È possibile usare qualsiasi porta TCP/IP gratuita.
Nota
Socket di dominio Unix ~/mylocalport è solo un esempio. È possibile usare qualsiasi percorso di file Free Unix Domain Socket.
Raccogliere una traccia di avvio usando dotnet-trace da un'applicazione .NET in esecuzione in Android
Se non è necessario raccogliere una traccia durante l'avvio dell'applicazione, è possibile avviare l'applicazione in modalità nosuspend, ovvero il runtime non si blocca all'avvio in attesa della connessione degli strumenti di diagnostica prima di riprendere l'esecuzione. La maggior parte dello scenario descritto sopra si applica anche a questa modalità, semplicemente sostituire suspend con nosuspend in variabile di ambiente DOTNET_DiagnosticPorts per avviare l'applicazione in modalità nosuspend.