dotnet-dsrouter
Artikel ini berlaku untuk: ✔️ .NET 6.0 SDK dan versi yang lebih baru
Instal
Untuk menginstal versi rilis terbaru paket dotnet-dsrouter
NuGet, gunakan perintah penginstalan alat dotnet:
dotnet tool install --global dotnet-dsrouter
Sinopsis
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Deskripsi
Menghubungkan dotnet-dsrouter
alat diagnostik seperti dotnet-trace
dan dotnet-counters
ke aplikasi .NET yang berjalan di Android, iOS, dan tvOS, terlepas dari apakah mereka berjalan sebagai emulator, simulator, atau pada perangkat itu sendiri. Alat diagnostik menggunakan komunikasi antar-proses lokal (IPC) (Pipa Bernama, Soket Domain Unix) untuk terhubung dan berkomunikasi dengan runtime .NET. Aplikasi .NET yang berjalan di lingkungan terkotakpasir pada emulator, simulator, dan perangkat memerlukan cara alternatif untuk berkomunikasi. Injeksi itu dotnet-dsrouter
sendiri antara alat diagnostik yang ada dan aplikasi seluler .NET dan membuat representasi lokal aplikasi. memungkinkan dotnet-dsrouter
alat diagnostik untuk berkomunikasi dengan runtime .NET jarak jauh seolah-olah telah berjalan di komputer lokal.
Komunikasi antara alat diagnostik dan dotnet-dsrouter
menggunakan IPC yang sama (Named Pipe, Unix Domain Socket) seperti yang digunakan saat menyambungkan ke runtime .NET lokal.
dotnet-dsrouter
menggunakan TCP/IP dalam komunikasinya dengan runtime .NET jarak jauh dan mendukung beberapa skenario konektivitas yang berbeda untuk menangani berbagai kebutuhan dan persyaratan yang digunakan oleh platform yang berbeda.
dotnet-dsrouter
juga menerapkan dukungan tambahan untuk menyederhanakan konfigurasi konektivitas saat berjalan di emulator, simulator, dan pada perangkat fisik yang terpasang melalui USB.
Catatan
dotnet-dsrouter
ditujukan untuk pengembangan dan pengujian dan sangat disarankan untuk menjalankan dotnet-dsrouter
melalui antarmuka loopback (misalnya, 127.0.0.1
, [::1]
). Fitur konektivitas dan kemampuan penerusan dotnet-dsrouter
port menangani semua skenario menggunakan emulator lokal, simulator, atau perangkat fisik yang terhubung melalui USB.
Peringatan
Mengikat titik akhir server TCP ke apa pun kecuali antarmuka loopback (localhost
, 127.0.0.1
atau [::1]
) tidak disarankan. Koneksi apa pun ke titik akhir server TCP tidak akan diautentikasi dan tidak terenkripsi.
dotnet-dsrouter
ditujukan untuk penggunaan pengembangan dan hanya boleh dijalankan dalam lingkungan pengembangan dan pengujian.
Penggunaan dotnet-dsrouter
terperinci bersama dengan aplikasi seluler diuraikan oleh masing-masing .NET SDK. Dokumen ini hanya akan menyertakan beberapa contoh tentang cara menjalankan alat diagnostik terhadap aplikasi .NET yang berjalan di Android. Untuk detail mendalam tentang konfigurasi dan skenario, lihat Pelacakan Diagnostik.
Opsi
-?|-h|--help
Tampilkan bantuan baris perintah.
--version
Menampilkan versi
dotnet-dsrouter
utilitas.
Perintah
Perintah |
---|
dotnet-dsrouter client-server |
server-server dotnet-dsrouter |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Mulai server diagnostik aplikasi .NET yang merutekan server IPC lokal dan klien TCP jarak jauh. Router dikonfigurasi menggunakan klien IPC (menghubungkan server IPC alat diagnostik) dan server TCP/IP (menerima klien TCP runtime).
Sinopsis
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opsi
-ipcc, --ipc-client <ipcClient>
Menentukan alamat IPC server diagnostik alat diagnostik (
--diagnostic-port
argumen). Router terhubung ke server IPC alat diagnostik saat membuat rute baru antara runtime dan alat diagnostik.-tcps, --tcp-server <tcpServer>
Menentukan alamat TCP/IP router menggunakan format
[host]:[port]
. Router dapat mengikat satu (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, alamat IPv4, alamat IPv6, nama host) atau semua antarmuka (*). Meluncurkan runtime menggunakanDOTNET_DiagnosticPorts
variabel lingkungan dan menghubungkan server TCP router selama startup.-rt, --runtime-timeout <runtimeTimeout>
Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.
-v, --verbose <verbose>
Mengaktifkan pengelogan verbose (debug|pelacakan).
-fp, --forward-port <forwardPort>
Mengaktifkan penerusan port. Nilainya adalah
Android
atauiOS
untukTcpClient
, dan hanyaAndroid
untukTcpServer
. Pastikan untuk mengaturANDROID_SDK_ROOT
sebelum menggunakan opsi ini di Android.
server-server dotnet-dsrouter
Mulai server diagnostik aplikasi .NET yang merutekan klien IPC lokal dan klien TCP jarak jauh. Router dikonfigurasi menggunakan server IPC (menyambungkan dengan alat diagnostik) dan server TCP/IP (menerima klien TCP runtime).
Sinopsis
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opsi
-ipcs, --ipc-server <ipcServer>
Alamat IPC server diagnostik untuk dirutekan. Router menerima koneksi IPC dari alat diagnostik yang membangun rute baru antara runtime dan alat diagnostik. Jika tidak ditentukan, router akan menggunakan jalur server diagnostik IPC default.
-tcps, --tcp-server <tcpServer>
Alamat TCP/IP router dalam format
[host]:[port]
. Router dapat mengikat satu (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, alamat IPv4, alamat IPv6, nama host) atau semua antarmuka (*). Luncurkan runtime menggunakanDOTNET_DiagnosticPorts
variabel lingkungan, menghubungkan server TCP router selama startup.-rt, --runtime-timeout <runtimeTimeout>
Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.
-v, --verbose <verbose>
Mengaktifkan pengelogan verbose (debug|pelacakan).
-fp, --forward-port <forwardPort>
Mengaktifkan penerusan port. Nilainya adalah
Android
atauiOS
untukTcpClient
, dan hanyaAndroid
untukTcpServer
. Pastikan untuk mengaturANDROID_SDK_ROOT
sebelum menggunakan opsi ini di Android.
dotnet-dsrouter server-client
Mulai server diagnostik aplikasi .NET yang merutekan klien IPC lokal dan server TCP jarak jauh. Router dikonfigurasi menggunakan server IPC (menyambungkan ke dengan alat diagnostik) dan klien TCP/IP (menghubungkan server TCP runtime).
Sinopsis
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opsi
-ipcs, --ipc-server <ipcServer>
Alamat IPC server diagnostik untuk dirutekan. Router menerima koneksi IPC dari alat diagnostik yang membangun rute baru antara runtime dan alat diagnostik. Jika tidak ditentukan, router akan menggunakan jalur server diagnostik IPC default.
-tcpc, --tcp-client <tcpClient>
Alamat TCP/IP runtime dalam format
[host]:[port]
. Router dapat menyambungkan127.0.0.1
,[::1]
, alamat IPv4, alamat IPv6, alamat nama host. Luncurkan runtime menggunakanDOTNET_DiagnosticPorts
variabel lingkungan untuk menyiapkan pendengar.-rt, --runtime-timeout <runtimeTimeout>
Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.
-v, --verbose <verbose>
Mengaktifkan pengelogan verbose (debug|pelacakan).
-fp, --forward-port <forwardPort>
Mengaktifkan penerusan port. Nilainya adalah
Android
atauiOS
untukTcpClient
, dan hanyaAndroid
untukTcpServer
. Pastikan untuk mengaturANDROID_SDK_ROOT
sebelum menggunakan opsi ini di Android.
dotnet-dsrouter client-client
Mulai server diagnostik aplikasi .NET merutekan server IPC lokal dan server TCP jarak jauh. Router dikonfigurasi menggunakan klien IPC (menghubungkan server IPC alat diagnostik) dan klien TCP/IP (menghubungkan server TCP runtime).
Sinopsis
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Opsi
-ipcc, --ipc-client <ipcClient>
Alamat IPC server diagnostik alat diagnostik (
--diagnostic-port argument
). Router terhubung ke server IPC alat diagnostik saat membuat rute baru antara runtime dan alat diagnostik.-tcpc, --tcp-client <tcpClient>
Alamat TCP/IP runtime dalam format
[host]:[port]
. Router dapat menyambungkan127.0.0.1
,[::1]
, alamat IPv4, alamat IPv6, alamat nama host. Luncurkan runtime menggunakanDOTNET_DiagnosticPorts
variabel lingkungan untuk menyiapkan listener.-rt, --runtime-timeout <runtimeTimeout>
Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.
-v, --verbose <verbose>
Mengaktifkan pengelogan verbose (debug|pelacakan).
-fp, --forward-port <forwardPort>
Mengaktifkan penerusan port. Nilainya adalah
Android
atauiOS
untukTcpClient
, dan hanyaAndroid
untukTcpServer
. Pastikan untuk mengaturANDROID_SDK_ROOT
sebelum menggunakan opsi ini di Android.
Mengumpulkan jejak startup menggunakan dotnet-trace dari aplikasi .NET yang berjalan di Android
Terkadang mungkin berguna untuk mengumpulkan jejak aplikasi dari startup-nya. Langkah-langkah berikut menggambarkan proses melakukannya dengan menargetkan aplikasi .NET yang berjalan di Android. Karena dotnet-dsrouter
dijalankan menggunakan penerusan port, skenario yang sama berfungsi terhadap aplikasi yang berjalan pada emulator lokal dan pada perangkat fisik yang terpasang melalui USB. Pastikan untuk mengatur ANDROID_SDK_ROOT
sebelum menggunakan opsi ini atau dotnet-dsrouter
tidak akan dapat menemukan adb
yang diperlukan untuk menyiapkan penerusan port.
Luncurkan dotnet-dsrouter dalam mode server-server:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Atur
DOTNET_DiagnosticPorts
variabel lingkungan menggunakanAndroidEnvironment
:Buat file di direktori yang sama dengan .csproj menggunakan nama seperti
app.env
, tambahkan variabel lingkungan ke dalam file,DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
dan sertakan berikutItemGroup
ke dalam .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Dimungkinkan juga untuk mengatur
DOTNET_DiagnosticPorts
menggunakanadb shell setprop
:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Buat dan luncurkan aplikasi menggunakan .NET Android SDK, dan aktifkan pelacakan dengan meneruskan
/p:AndroidEnableProfiler=true
ke MSBuild. Karena aplikasi telah dikonfigurasi untuk menangguhkan saat startup, aplikasi akan terhubung kembali kedotnet-dsrouter
listener TCP/IP yang berjalan127.0.0.1:9000
dan menunggu alat diagnostik tersambung sebelum melanjutkan eksekusi aplikasi.Mulai
dotnet-trace
dalam mode kumpulkan, sambungkan kedotnet-dsrouter
server IPC, ~/mylocalport:dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
akan memulai sesi pelacakan dan melanjutkan aplikasi yang sekarang akan terus dijalankan. Aliran peristiwa akan mulai mengalir dari aplikasi seluler, melalui dotnet-dsrouter
ke file dotnet-trace
nettrace. Setelah selesai melacak, tekan Enter untuk memastikan sesi pelacakan ditutup dengan benar memastikan file nettrace menyertakan semua data yang diperlukan sebelum aplikasi ditutup.
Dimungkinkan untuk menjalankan beberapa sesi pelacakan terhadap aplikasi yang berjalan yang sama dari waktu ke waktu, biarkan dotnet-dsrouter
berjalan dan jalankan dotnet-trace
kembali ketika sesi pelacakan baru diperlukan.
dotnet-dsrouter
dapat dibiarkan berjalan di latar belakang dan digunakan kembali jika aplikasi dikonfigurasi untuk terhubung menggunakan alamat dan portnya.
dotnet-dsrouter
terkait dengan satu aplikasi yang berjalan kapan saja. Jika perlu melacak beberapa aplikasi yang berbeda pada saat yang sama, setiap aplikasi perlu menggunakan instansnya sendiri dotnet-dsrouter
, dengan menyiapkan pasangan alamat IPC, TCP/IP unik dan dotnet-dsrouter
mengonfigurasi instans aplikasi yang berbeda untuk terhubung kembali ke instans uniknya dotnet-dsrouter
.
Jika dotnet-dsrouter
dijalankan dengan --forward-port
menargetkan Android dan adb
server, emulator, atau perangkat akan dimulai ulang, semua dotnet-dsrouter
instans perlu dimulai ulang juga untuk memulihkan aturan penerusan port.
Setelah selesai menggunakan dotnet-dsrouter
, tekan Q atau Ctrl + C untuk keluar dari aplikasi.
Catatan
Ketika berjalan dotnet-dsrouter
pada Windows, ia akan menggunakan Pipa Bernama untuk saluran IPC-nya. Ganti ~/mylocalport dengan mylocalport dalam contoh di atas saat berjalan di Windows.
Catatan
Port TCP/IP 9000 hanyalah contoh. Port TCP/IP gratis apa pun dapat digunakan.
Catatan
Unix Domain Socket ~/mylocalport hanyalah contoh. Jalur file Unix Domain Socket gratis dapat digunakan.
Mengumpulkan jejak menggunakan dotnet-trace dari aplikasi .NET yang berjalan di Android
Jika tidak perlu mengumpulkan jejak selama startup aplikasi, dimungkinkan untuk meluncurkan aplikasi dalam nosuspend
mode, yang berarti runtime tidak akan memblokir saat startup menunggu alat diagnostik tersambung sebelum memulai kembali eksekusi. Sebagian besar skenario yang dijelaskan di atas juga berlaku untuk mode ini, cukup ganti suspend
dengan nosuspend
dalam DOTNET_DiagnosticPorts
variabel lingkungan untuk meluncurkan aplikasi dalam nosuspend
mode.