Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья относится к: ✔️ пакету 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.