Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эта статья относится к: ✔️ пакету SDK для .NET 6.0 и более поздних версий
Install
Чтобы установить последнюю версию пакета dotnet-dsrouterNuGet, используйте команду dotnet tool install.
dotnet tool install --global dotnet-dsrouter
Synopsis
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Description
dotnet-dsrouter подключает средства диагностики, такие как dotnet-trace и dotnet-counters к приложениям .NET, работающим в Android, iOS и tvOS в качестве эмулятора, симулятора или на самом устройстве. Средства диагностики выполняют локальный внутрипроцессный обмен данными (IPC) (именованный канал, сокет домена Unix) для подключения к среде выполнения .NET и взаимодействия с ней. Приложениям .NET, работающим в изолированных средах в эмуляторах, симуляторах и устройствах, требуются альтернативные способы обмена данными.
dotnet-dsrouter внедряется между существующими средствами диагностики и мобильными приложениями .NET для создания локального представления приложения.
dotnet-dsrouter позволяет средствам диагностики взаимодействовать с удаленной средой выполнения .NET, как при выполнении на локальном компьютере.
Обмен данными между средствами диагностики и dotnet-dsrouter осуществляется с помощью того же механизма IPC (именованный канал, сокет домена Unix), который используется, когда подключаются к локальной среде выполнения .NET.
dotnet-dsrouter использует TCP/IP для взаимодействия с удаленной средой выполнения .NET и поддерживает несколько разных сценариев подключения с учетом разных требований разных платформ.
dotnet-dsrouter также реализует дополнительную поддержку, чтобы упростить настройку подключения при работе в эмуляторе, симуляторе и на физическом устройстве, подключенном по USB.
Note
dotnet-dsrouter используется для разработки и тестирования, поэтому настоятельно рекомендуется запускать dotnet-dsrouter через интерфейс с возвратом цикла (например, 127.0.0.1, [::1]). Функции подключения и возможности переадресации портов dotnet-dsrouter поддерживают все сценарии с использованием локального эмулятора, симулятора или физического устройства с подключением через USB.
Warning
Выполнять привязку конечной точки TCP-сервера к чему-либо, кроме интерфейса с возвратом цикла (localhost, 127.0.0.1 или [::1]), не рекомендуется. Любые подключения к конечной точке TCP-сервера не будут проходить проверку подлинности и не будут шифроваться.
dotnet-dsrouter предназначен для использования в разработке и должен запускаться только в средах разработки и тестирования.
Особенности использования dotnet-dsrouter вместе с мобильными приложениями определяются в документации по соответствующим пакетам SDK для .NET. Этот документ будет включать только несколько примеров того, как запускать средства диагностики для приложения .NET, работающего в Android. Подробные сведения о конфигурации и сценариях см. в статье, посвященной диагностической трассировке.
Options
-?|-h|--helpПоказать справку в командной строке.
--versionОтображает версию утилиты
dotnet-dsrouter.
Commands
| Command |
|---|
| dotnet-dsrouter client-server |
| dotnet-dsrouter server-server |
| dotnet-dsrouter server-client |
| dotnet-dsrouter client-client |
dotnet-dsrouter клиент-сервер
Запустите сервер диагностики приложения .NET с маршрутизацией локального IPC-сервера и удаленного TCP-клиента. Маршрутизатор настраивается с использованием IPC-клиента (для соединения с IPC-сервером диагностического инструмента) и TCP/IP-сервера (для приема TCP-клиента во время выполнения).
Synopsis
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Options
-ipcc, --ipc-client <ipcClient>Указывает IPC-адрес сервера диагностического средства (
--diagnostic-portаргумент). Маршрутизатор подключается к серверу IPC инструмента диагностики при создании нового маршрута между исполняемой средой и инструментом диагностики.-tcps, --tcp-server <tcpServer>Указывает TCP/IP-адрес маршрутизатора с помощью формата
[host]:[port]. Маршрутизатор может привязать один (127.0.0.1,[::1],0.0.0.0,[::], IPv4-адрес, IPv6-адрес, имя хоста) или все (*) интерфейсы. Запускает среду выполнения с помощью переменнойDOTNET_DiagnosticPortsсреды и подключает TCP-сервер маршрутизатора во время запуска.-rt, --runtime-timeout <runtimeTimeout>Автоматически отключает маршрутизатор, если ни одна среда выполнения не подключается к нему до истечения указанного тайм-аута (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>Включает подробный журнал (отладка|трассировка).
-fp, --forward-port <forwardPort>Включает переадресацию портов. Значения могут быть
AndroidилиiOSдляTcpClient, и толькоAndroidдляTcpServer. Для Android опционально установите$ANDROID_HOMEна допустимый путь к Android SDK.
dotnet-dsrouter server-server
Запустите сервер диагностики приложений .NET с маршрутизацией локального IPC-клиента и удаленного TCP-клиента. Маршрутизатор настраивается с использованием IPC-сервера (к которому подключаются диагностические средства) и сервера TCP/IP (принимающего подключения от TCP-клиентов в режиме выполнения).
Synopsis
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Options
-ipcs, --ipc-server <ipcServer>Адрес IPC сервера диагностики для маршрутизации. Маршрутизатор принимает IPC-подключения от диагностических инструментов, устанавливая новый маршрут между средой выполнения и диагностическим инструментом. Если не задано иное, маршрутизатор будет использовать путь к серверу диагностики IPC по умолчанию.
-tcps, --tcp-server <tcpServer>TCP/IP-адрес маршрутизатора в формате
[host]:[port]. Маршрутизатор может привязать один (127.0.0.1,[::1],0.0.0.0,[::], IPv4-адрес, IPv6-адрес, имя хоста) или все (*) интерфейсы. Запустите среду выполнения, используя переменную средыDOTNET_DiagnosticPortsс подключением TCP-сервера маршрутизатора во время запуска.-rt, --runtime-timeout <runtimeTimeout>Автоматически отключает роутер, если среда выполнения не подключается к нему до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>Включает подробное ведение журнала (отладка|трассировка).
-fp, --forward-port <forwardPort>Включает переадресацию портов. Значения — это
AndroidилиiOSдляTcpClient, и толькоAndroidдляTcpServer. Для Android опционально установите$ANDROID_HOMEна допустимый путь к Android SDK.
dotnet-dsrouter сервер-клиент
Запустите сервер диагностики приложений .NET с маршрутизацией локального IPC-клиента и удаленного TCP-сервера. Маршрутизатор настраивается с использованием IPC-сервера (к которому подключаются диагностические инструменты) и TCP/IP-клиента (подключаемого к TCP-серверу в среде выполнения).
Synopsis
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Options
-ipcs, --ipc-server <ipcServer>IPC-адрес сервера диагностики для маршрута. Маршрутизатор принимает подключения IPC от диагностических инструментов, устанавливая новый маршрут между средой выполнения и инструментом диагностики. Если не указано, маршрутизатор будет использовать путь по умолчанию к диагностическому серверу IPC.
-tcpc, --tcp-client <tcpClient>TCP/IP-адрес среды выполнения в формате
[host]:[port]. Маршрутизатор может подключить127.0.0.1,[::1], IPv4-адрес, IPv6-адрес, имя хоста. Запустите среду выполнения с помощьюDOTNET_DiagnosticPortsпеременной среды для настройки прослушивателя.-rt, --runtime-timeout <runtimeTimeout>Автоматически отключает маршрутизатор, если среда выполнения не подключается к нему до заданного тайм-аута (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>Включает подробное ведение журнала (отладка|трассировка).
-fp, --forward-port <forwardPort>Включает переадресацию портов. Значения
AndroidилиiOSдляTcpClient, а толькоAndroidдляTcpServer. Для Android опционально установите$ANDROID_HOMEна допустимый путь к Android SDK.
dotnet-dsrouter client-client
Запустите сервер диагностики приложения .NET с маршрутизацией локального IPC-сервера и удаленного TCP-сервера. Маршрутизатор настраивается с использованием IPC-клиента (с подключением IPC-сервера средства диагностики) и TCP/IP-клиента (с подключением TCP-сервера среды выполнения).
Synopsis
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Options
-ipcc, --ipc-client <ipcClient>Средство диагностики адреса IPC сервера (
--diagnostic-port argument). Маршрутизатор подключается к серверу IPC средства диагностики при установке нового маршрута между средой выполнения и средством диагностики.-tcpc, --tcp-client <tcpClient>TCP/IP-адрес среды выполнения в формате
[host]:[port]. Маршрутизатор может подключить127.0.0.1,[::1], IPv4-адрес, IPv6-адрес, имя хоста. Запустите среду выполнения с помощьюDOTNET_DiagnosticPortsпеременной среды для настройки прослушивателя.-rt, --runtime-timeout <runtimeTimeout>Автоматически завершает работу маршрутизатора, если среда выполнения не подключается к нему до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>Включает подробное логирование (отладка|трассировка).
-fp, --forward-port <forwardPort>Включает переадресацию портов.
AndroidилиiOSдляTcpClient, и толькоAndroidдляTcpServer. Для Android опционально установите$ANDROID_HOMEна допустимый путь к Android SDK.
Сбор трассировки запуска с помощью dotnet-trace из приложения .NET, работающего на Android
Иногда бывает полезно получить трассировку приложения с момента его запуска. Ниже показано, как выполнить эту процедуру для приложения .NET, работающего в Android. Так как dotnet-dsrouter запускается с использованием переадресации портов, тот же сценарий поддерживается для приложений, работающих в локальном эмуляторе и на физическом устройстве с подключением через USB.
dotnet-dsrouter пытается автоматически найти пакет SDK для Android и adb необходим для настройки перенаправления портов. При необходимости укажите $ANDROID_HOME путь пакета SDK для Android.
Запустите dotnet-dsrouter в режиме"сервер — сервер":
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &Задайте переменную среды
DOTNET_DiagnosticPorts, используяAndroidEnvironment:Создайте файл в том же каталоге, что и .csproj, используя такое имя, как
app.env, добавьте переменные среды в файлDOTNET_DiagnosticPorts=127.0.0.1:9000,suspendи включитеItemGroupв .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>Также можно задать
DOTNET_DiagnosticPorts, используяadb shell setprop:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'Создайте и запустите приложение, используя .NET Android SDK, и активируйте трассировку, передав
/p:AndroidEnableProfiler=trueв MSBuild. Так как приложение настроено приостанавливать работу при запуске, оно снова подключится к запущенному прослушивателю TCP/IPdotnet-dsrouter, работающему в127.0.0.1:9000, и будет ждать подключения средств диагностики, прежде чем возобновлять работу.Запустите
dotnet-traceв режиме сбора с подключением к IPC-серверуdotnet-dsrouter(~/mylocalport):dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace запустит сеанс трассировки и возобновит выполнение приложения, которое теперь продолжит исполнение. Поток событий начнет передаваться из мобильного приложения через dotnet-dsrouter в файл nettrace dotnet-trace. По завершении сбора трассировки нажмите клавишу ВВОД, чтобы убедиться, что сеанс трассировки правильно закрыт. Так в файл nettrace будут включены все необходимые данные, прежде чем приложение будет закрыто.
С течением времени можно запустить несколько сеансов трассировки для одного и того же работающего приложения, оставьте dotnet-dsrouter работающим и запустите dotnet-trace заново, когда нужен новый сеанс трассировки.
dotnet-dsrouter можно оставить работать в фоновом режиме и использовать повторно, если приложение настроено выполнять подключение с использованием его адреса и порта.
dotnet-dsrouter привязывается к одному запущенному приложению в любое время. Если есть необходимость отслеживать несколько разных приложений одновременно, каждое приложение должно использовать свой собственный экземпляр dotnet-dsrouter. Для этого задайте уникальное значение IPC и пары TCP/IP-адресов в dotnet-dsrouter, а также настройте разные экземпляры приложения для обратного подключения к уникальному экземпляру dotnet-dsrouter.
Если dotnet-dsrouter запускается с --forward-port нацеливанием на Android и adb сервер, эмулятор или устройство перезапускаются, необходимо также перезапустить все dotnet-dsrouter экземпляры, чтобы восстановить правила перенаправления портов.
По завершении использования dotnet-dsrouter нажмите клавишу Q или клавиши CTRL + C, чтобы выйти из приложения.
Note
Если dotnet-dsrouter запускается в операционной системе Windows, для IPC-канала будут использоваться именованные каналы. Измените ~/mylocalport на mylocalport в примерах выше при запуске в Windows.
Note
TCP/IP-порт 9000 используется для примера. Можно использовать любой свободный TCP/IP-порт.
Note
Сокет домена UNIX ~/mylocalport используется для примера. Можно использовать любой свободный путь к файлу сокета домена UNIX.
Сбор трассировки с помощью dotnet-trace из приложения .NET, работающего на Android
Если нет необходимости собирать трассировку при запуске приложения, можно запустить приложение в nosuspend режиме, что означает, что среда выполнения не будет блокирована при запуске в ожидании подключения диагностических инструментов перед продолжением выполнения. Большая часть описанного выше сценария применима и к этому режиму. Просто измените suspend на nosuspend в переменной среды DOTNET_DiagnosticPorts, чтобы запустить приложение в режиме nosuspend.