dotnet-dsrouter
이 문서의 적용 대상: ✔️ .NET 6.0 SDK 이상 버전
설치
dotnet-dsrouter
NuGet 패키지의 최신 릴리스 버전을 설치하려면 dotnet tool install 명령을 사용합니다.
dotnet tool install --global dotnet-dsrouter
개요
dotnet-dsrouter [-?, -h, --help] [--version] <command>
설명
dotnet-dsrouter
는 에뮬레이터, 시뮬레이터 또는 디바이스 자체에서 실행되는지 여부에 관계없이 dotnet-trace
및 dotnet-counters
같은 진단 도구를 Android, iOS 및 tvOS에서 실행되는 .NET 애플리케이션에 연결합니다. 진단 도구는 로컬 IPC(프로세스 간 통신)(명명된 파이프, Unix 도메인 소켓)를 사용하여 .NET 런타임에 연결하고 통신합니다. 에뮬레이터, 시뮬레이터 및 디바이스의 샌드박스 환경에서 실행되는 .NET 애플리케이션에는 다른 통신 방법이 필요합니다. dotnet-dsrouter
는 기존 진단 도구와 .NET 모바일 애플리케이션 사이에 개입하여 애플리케이션의 로컬 표현을 만듭니다. dotnet-dsrouter
를 사용하면 진단 도구가 로컬 컴퓨터에서 실행 중인 것처럼 원격 .NET 런타임과 통신할 수 있습니다.
진단 도구와 dotnet-dsrouter
간의 통신은 로컬 .NET 런타임에 연결할 때 사용되는 것과 동일한 IPC(명명된 파이프, Unix 도메인 소켓)를 사용합니다. dotnet-dsrouter
에서는 원격 .NET 런타임과의 통신에 TCP/IP를 사용하고 여러 플랫폼에서 사용하는 다양한필요 및 요구 사항을 처리할 수 있도록 여러 가지 연결 시나리오를 지원합니다. 또한 dotnet-dsrouter
는 에뮬레이터, 시뮬레이터 및 USB를 통해 연결된 물리적 디바이스에서 실행할 때 연결 구성을 간소화하기 위한 추가 지원도 구현합니다.
참고 항목
dotnet-dsrouter
는 개발 및 테스트용이며 dotnet-dsrouter
루프백 인터페이스(예: 127.0.0.1
, [::1]
)를 통해 실행하는 것이 좋습니다. dotnet-dsrouter
의 연결 기능 및 포트 전달 기능은 로컬 에뮬레이터, 시뮬레이터 또는 USB를 통해 연결된 물리적 디바이스를 사용하여 모든 시나리오를 처리합니다.
Warning
루프백 인터페이스(localhost
, 127.0.0.1
또는 [::1]
)를 제외한 모든 엔드포인트에 TCP 서버 엔드포인트를 바인딩하지 않는 것이 좋습니다. TCP 서버 엔드포인트에 대한 모든 연결은 인증되지 않고 암호화되지 않습니다. dotnet-dsrouter
는 개발 용도로 사용되며 개발 및 테스트 환경에서만 실행해야 합니다.
dotnet-dsrouter
를 모바일 애플리케이션과 함께 사용하는 방법은 각 .NET SDK에서 간략하게 설명합니다. 이 문서에는 Android에서 실행되는 .NET 애플리케이션에 대해 진단 도구를 실행하는 방법을 보여주는 몇 가지 예제만 포함됩니다. 구성 및 시나리오에 대한 자세한 내용은 진단 추적을 참조하세요.
옵션
-?|-h|--help
명령줄 도움말을 표시합니다.
--version
dotnet-dsrouter
유틸리티의 버전을 표시합니다.
명령
명령 |
---|
dotnet-dsrouter client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
로컬 IPC 서버 및 원격 TCP 클라이언트를 라우팅하는 .NET 애플리케이션 진단 서버를 시작합니다. 라우터는 IPC 클라이언트(진단 도구 IPC 서버를 연결) 및 TCP/IP 서버(런타임 TCP 클라이언트를 허용)를 사용하여 구성됩니다.
개요
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
옵션
-ipcc, --ipc-client <ipcClient>
진단 도구 진단 서버 IPC 주소(
--diagnostic-port
인수)를 지정합니다. 런타임과 진단 도구 사이에 새로운 경로를 설정할 때 라우터는 진단 도구 IPC 서버에 연결됩니다.-tcps, --tcp-server <tcpServer>
[host]:[port]
형식을 사용하여 라우터 TCP/IP 주소를 지정합니다. 라우터는 인터페이스를 하나(127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4 주소, IPv6 주소, 호스트 이름) 또는 모두(*) 바인딩할 수 있습니다.DOTNET_DiagnosticPorts
환경 변수를 사용하여 런타임을 시작하고 시작 중에 라우터 TCP 서버를 연결합니다.-rt, --runtime-timeout <runtimeTimeout>
지정된 시간 제한(초) 전에 런타임이 라우터에 연결되지 않으면 자동으로 라우터를 종료합니다. 지정하지 않으면 라우터가 자동 종료를 트리거하지 않습니다.
-v, --verbose <verbose>
자세한 로깅을 사용하도록 설정합니다(debug|trace).
-fp, --forward-port <forwardPort>
포트 전달을 사용하도록 설정합니다. 값은
TcpClient
의 경우Android
또는iOS
이고,TcpServer
의 경우 값은Android
입니다. Android에서 이 옵션을 사용하려면 먼저ANDROID_SDK_ROOT
를 설정해야 합니다.
dotnet-dsrouter server-server
로컬 IPC 클라이언트 및 원격 TCP 클라이언트를 라우팅하는 .NET 애플리케이션 진단 서버를 시작합니다. 라우터는 IPC 서버(진단 도구가 연결) 및 TCP/IP 서버(런타임 TCP 클라이언트를 허용)를 사용하여 구성됩니다.
개요
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
옵션
-ipcs, --ipc-server <ipcServer>
라우팅할 진단 서버 IPC 주소입니다. 라우터는 런타임과 진단 도구 간에 새 경로를 설정하는 진단 도구의 IPC 연결을 허용합니다. 지정하지 않으면 라우터는 기본 IPC 진단 서버 경로를 사용합니다.
-tcps, --tcp-server <tcpServer>
[host]:[port]
형식의 라우터 TCP/IP 주소입니다. 라우터는 인터페이스를 하나(127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4 주소, IPv6 주소, 호스트 이름) 또는 모두(*) 바인딩할 수 있습니다.DOTNET_DiagnosticPorts
환경 변수를 사용하여 런타임을 시작하고, 시작하는 동안 라우터 TCP 서버를 연결합니다.-rt, --runtime-timeout <runtimeTimeout>
지정된 시간 제한(초) 전에 런타임이 라우터에 연결되지 않으면 자동으로 라우터를 종료합니다. 지정하지 않으면 라우터가 자동 종료를 트리거하지 않습니다.
-v, --verbose <verbose>
자세한 로깅을 사용하도록 설정합니다(debug|trace).
-fp, --forward-port <forwardPort>
포트 전달을 사용하도록 설정합니다. 값은
TcpClient
의 경우Android
또는iOS
이고,TcpServer
의 경우 값은Android
입니다. Android에서 이 옵션을 사용하려면 먼저ANDROID_SDK_ROOT
를 설정해야 합니다.
dotnet-dsrouter server-client
로컬 IPC 클라이언트 및 원격 TCP 서버를 라우팅하는 .NET 애플리케이션 진단 서버를 시작합니다. 라우터는 IPC 서버(진단 도구가 연결) 및 TCP/IP 클라이언트(런타임 TCP 서버를 연결)를 사용하여 구성됩니다.
개요
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
옵션
-ipcs, --ipc-server <ipcServer>
라우팅할 진단 서버 IPC 주소입니다. 라우터는 런타임과 진단 도구 간에 새 경로를 설정하는 진단 도구의 IPC 연결을 허용합니다. 지정하지 않으면 라우터는 기본 IPC 진단 서버 경로를 사용합니다.
-tcpc, --tcp-client <tcpClient>
[host]:[port]
형식의 런타임 TCP/IP 주소입니다. 라우터는127.0.0.1
,[::1]
, IPv4 주소, IPv6 주소, 호스트 이름 주소를 연결할 수 있습니다. 수신기를 설정하려면DOTNET_DiagnosticPorts
환경 변수를 사용하여 런타임을 시작합니다.-rt, --runtime-timeout <runtimeTimeout>
지정된 시간 제한(초) 전에 런타임이 라우터에 연결되지 않으면 자동으로 라우터를 종료합니다. 지정하지 않으면 라우터가 자동 종료를 트리거하지 않습니다.
-v, --verbose <verbose>
자세한 로깅을 사용하도록 설정합니다(debug|trace).
-fp, --forward-port <forwardPort>
포트 전달을 사용하도록 설정합니다. 값은
TcpClient
의 경우Android
또는iOS
이고,TcpServer
의 경우 값은Android
입니다. Android에서 이 옵션을 사용하려면 먼저ANDROID_SDK_ROOT
를 설정해야 합니다.
dotnet-dsrouter client-client
로컬 IPC 서버 및 원격 TCP 서버를 라우팅하는 .NET 애플리케이션 진단 서버를 시작합니다. 라우터는 IPC 클라이언트(진단 도구 IPC 서버를 연결) 및 TCP/IP 클라이언트(런타임 TCP 서버를 연결)를 사용하여 구성됩니다.
개요
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
옵션
-ipcc, --ipc-client <ipcClient>
진단 도구 진단 서버 IPC 주소입니다(
--diagnostic-port argument
). 라우터는 런타임과 진단 도구 간에 새 경로를 설정할 때 진단 도구 IPC 서버에 연결합니다.-tcpc, --tcp-client <tcpClient>
[host]:[port]
형식의 런타임 TCP/IP 주소입니다. 라우터는127.0.0.1
,[::1]
, IPv4 주소, IPv6 주소, 호스트 이름 주소를 연결할 수 있습니다. 수신기를 설정하려면DOTNET_DiagnosticPorts
환경 변수를 사용하여 런타임을 시작합니다.-rt, --runtime-timeout <runtimeTimeout>
지정된 시간 제한(초) 전에 런타임이 라우터에 연결되지 않으면 자동으로 라우터를 종료합니다. 지정하지 않으면 라우터가 자동 종료를 트리거하지 않습니다.
-v, --verbose <verbose>
자세한 로깅을 사용하도록 설정합니다(debug|trace).
-fp, --forward-port <forwardPort>
포트 전달을 사용하도록 설정합니다. 값은
TcpClient
의 경우Android
또는iOS
이고,TcpServer
의 경우 값은Android
입니다. Android에서 이 옵션을 사용하려면 먼저ANDROID_SDK_ROOT
를 설정해야 합니다.
Android에서 실행되는 .NET 애플리케이션에서 dotnet-trace를 사용하여 시작 추적 수집
경우에 따라 시작부터 애플리케이션의 추적을 수집하는 것이 유용할 수 있습니다. 다음 단계에서는 Android에서 실행되는 .NET 애플리케이션을 대상으로 지정하는 과정을 보여 줍니다. dotnet-dsrouter
는 포트 전달을 사용하여 실행되므로 동일한 시나리오가 로컬 에뮬레이터 및 USB를 통해 연결된 물리적 디바이스에서 실행되는 애플리케이션에서도 작동합니다. 이 옵션을 사용하기 전에 ANDROID_SDK_ROOT
를 설정해야 합니다. 그렇지 않으면 dotnet-dsrouter
가 포트 전달을 설정하는 데 필요한 adb
를 찾을 수 없습니다.
서버-서버 모드에서 dotnet-dsrouter 시작:
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
AndroidEnvironment
를 사용하여DOTNET_DiagnosticPorts
환경 변수 설정:app.env
와 같은 이름을 사용하여 .csproj와 동일한 디렉터리에 파일을 만들고, 파일에 환경 변수DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
를 추가하고, 다음ItemGroup
을 .csproj에 다음을 포함합니다.<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
adb shell setprop
을 사용하여DOTNET_DiagnosticPorts
를 설정할 수도 있습니다.adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
.NET Android SDK를 사용하여 애플리케이션을 빌드 및 시작하고
/p:AndroidEnableProfiler=true
를 MSBuild에 전달하여 추적을 사용하도록 설정합니다. 앱은 시작 시 일시 중단하도록 구성되었으므로127.0.0.1:9000
에서 실행되는dotnet-dsrouter
TCP/IP 수신기에 다시 연결하고 진단 도구가 연결될 때까지 기다렸다가 애플리케이션 실행을 다시 시작합니다.수집 모드에서
dotnet-trace
를 시작하여dotnet-dsrouter
IPC 서버 ~/mylocalport에 연결합니다.dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
는 추적 세션을 시작하고 애플리케이션을 다시 시작합니다. 그러면 애플리케이션이 계속 실행됩니다. 이벤트 스트림은 모바일 애플리케이션에서 dotnet-dsrouter
를 거쳐 dotnet-trace
nettrace 파일로 흐르기 시작합니다. 추적이 완료되면 애플리케이션이 닫히기 전에 nettrace 파일에 필요한 모든 데이터가 포함되도록 Enter 키를 눌러 애플리케이션을 올바로 종료합니다.
실행 중인 동일한 애플리케이션에 대해 여러 추적 세션을 실행하고, dotnet-dsrouter
를 계속 실행하고, 새 추적 세션이 필요할 때 dotnet-trace
를 다시 실행할 수 있습니다.
애플리케이션이 해당 주소 및 포트를 사용하여 연결하도록 구성된 경우 dotnet-dsrouter
를 백그라운드에서 계속 실행하며 다시 사용할 수 있습니다.
dotnet-dsrouter
는 한 번에 하나의 실행 중인 애플리케이션에만 연결됩니다. 동시에 여러 애플리케이션을 추적해야 하는 경우 각 애플리케이션은 dotnet-dsrouter
에서 고유한 IPC, TCP/IP 주소 쌍을 설정하고 고유한 dotnet-dsrouter
인스턴스에 다시 연결하도록 다른 애플리케이션 인스턴스를 구성하여 자체 dotnet-dsrouter
인스터스를 사용해야 합니다.
Android 및 adb
서버를 대상으로 --forward-port
를 사용하여 dotnet-dsrouter
를 실행하는 경우 에뮬레이터 또는 디바이스가 다시 시작되면 모든 dotnet-dsrouter
인스턴스를 다시 시작하여 포트 전달 규칙을 복원해야 합니다.
dotnet-dsrouter
사용을 마친 후에는 Q 또는 Ctrl + C를 눌러 애플리케이션을 종료합니다
참고 항목
dotnet-dsrouter
를 Windows에서 실행하는 경우 IPC 채널에 대해 명명된 파이프를 사용합니다. Windows에서 실행되는 경우 위의 예제에서 ~/mylocalport를 mylocalport로 바꿉니다.
참고 항목
TCP/IP 포트 9000은 한 가지 예입니다. 사용 가능한 TCP/IP 포트는 모두 사용할 수 있습니다.
참고 항목
Unix 도메인 소켓 ~/mylocalport는 한 가지 예입니다. 사용 가능한 Unix 도메인 소켓 파일 경로는 모두 사용할 수 있습니다.
Android에서 실행되는 .NET 애플리케이션에서 dotnet-trace를 사용하여 추적 수집
애플리케이션 시작 중에 추적을 수집하지 않아도 되는 경우 애플리케이션을 nosuspend
모드에서 시작할 수 있습니다. 즉, 시작 시 런타임이 실행을 다시 시작하기 전에 진단 도구가 연결될 때까지 기다리지 않습니다. 위에서 설명한 시나리오는 대부분 이 모드에도 적용됩니다. nosuspend
모드에서 애플리케이션을 시작하려면 DOTNET_DiagnosticPorts
환경 변수에서 suspend
를 nosuspend
로 바꿉니다.
참고 항목
.NET