Visual Studio에서 Azure Cloud Services(추가 지원) 서비스 디버그
Visual Studio는 Azure Cloud Services(추가 지원) 및 가상 머신을 디버깅하기 위한 다양한 옵션을 제공합니다.
필수 조건
- Azure 개발 워크로드가 설치되고 개별 구성 요소 .NET Framework 프로젝트 및 항목 템플릿이 설치된 Visual Studio([Visual Studio 다운로드] 참조https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-cta). Visual Studio 수정을 참조하세요.
- Azure 계정. Azure 계정: Azure 계정이 없는 경우 평가판을 등록하거나 Visual Studio 구독자 혜택을 활성화할 수 있습니다.
로컬 컴퓨터에서 클라우드 서비스 디버그
Azure 컴퓨팅 에뮬레이터를 사용하여 로컬 머신에서 클라우드 서비스를 디버그하면 시간과 비용을 절약할 수 있습니다. 배포하기 전에 로컬로 서비스를 디버깅하면, 컴퓨팅 시간이 소요되지 않고 안정성과 성능을 향상할 수 있습니다. 그러나, Azure 자체에서 클라우드 서비스를 실행하는 경우, 일부 오류가 발생할 수 있습니다. 서비스를 게시하거나 역할 인스턴스에 디버거를 연결할 때 원격 디버깅을 사용하면 이 오류들을 디버그할 수 있습니다.
에뮬레이터가 로컬 환경에서 Azure 컴퓨팅 서비스를 시뮬레이트 및 실행하여 클라우드 서비스를 배포하기 전에 테스트 및 디버그할 수 있습니다. 에뮬레이터는 역할 인스턴스의 수명 주기를 처리하고 로컬 스토리지 같은 시뮬레이트된 리소스에 대한 액세스를 제공합니다. Visual Studio에서 서비스를 디버그하거나 실행할 때, 에뮬레이터가 백그라운드 애플리케이션으로 자동으로 시작된 다음, 서비스가 에뮬레이터에 배포됩니다. 로컬 환경에서 서비스가 실행되는 것을 보기 위해 에뮬레이터를 사용할 수 있습니다. 에뮬레이터의 정식 버전 또는 Express 버전을 사용할 수 있습니다. 로컬로 클라우드 서비스를 실행 및 디버그할 때 에뮬레이터 익스프레스 사용을 참조하세요.
로컬 컴퓨터에서 클라우드 서비스를 디버그 하려면
메뉴 모음에서 디버그>시작 디버깅을 선택하여 Azure Cloud Services(추가 지원) 프로젝트를 실행합니다. F5를 눌러도 디버깅을 시작할 수 있습니다. 컴퓨팅 에뮬레이터가 시작된다는 메시지가 표기됩니다. 에뮬레이터를 시작할 때 시스템 트레이 아이콘을 확인합니다.
알림 영역에서 Azure 아이콘에 대한 바로 가기 메뉴를 연 다음 Compute 에뮬레이터 UI 표시를 선택하여 컴퓨팅 에뮬레이터에 대한 사용자 인터페이스를 표시합니다.
UI의 왼쪽 창에서는 현재 컴퓨팅 에뮬레이터와 각 서비스를 실행하는 역할 인스턴스가 배포되는 서비스를 보여줍니다. 오른쪽 창에서 수명 주기, 로깅 및 진단 정보를 표시하는 서비스 또는 역할을 선택할 수 있습니다. 포함된 창의 위쪽 여백에 포커스를 맞추면 오른쪽 창에 맞게 확장됩니다.
디버그 메뉴에서 명령을 선택하고 코드에서 중단점을 설정하여 애플리케이션을 단계별로 실행합니다. 디버거에서 애플리케이션을 통해 단계를 진행하면 애플리케이션의 현재 상태로 창이 업데이트됩니다. 디버깅을 중지하면 애플리케이션 배포가 삭제됩니다. 애플리케이션이 웹 역할을 포함하고 웹 브라우저를 시작하도록 시작 동작 속성을 설정하면, Visual Studio는 브라우저에서 웹 애플리케이션을 시작합니다. 서비스 구성에서 역할의 인스턴스 수를 변경한 경우, 클라우드 서비스를 중지하고 역할의 이러한 새 인스턴스를 디버깅할 수 있도록 디버깅을 다시 시작해야 합니다.
참고 항목
서비스 실행이나 디버깅을 중지해도 로컬 컴퓨팅 에뮬레이터 및 스토리지 에뮬레이터는 중지되지 않습니다. 알림 영역에서 이 에뮬레이터들을 명시적으로 중지해야 합니다.
Azure에서 클라우드 서비스 디버그
이 섹션의 절차를 통해 클라우드 서비스에 원격 디버깅을 사용하도록 설정면 성능이 저하되거나 추가 요금이 발생하지 않습니다. 서비스를 사용하는 클라이언트에 악영향을 줄 수 있으므로 원격 디버깅을 프로덕션 서비스에 사용하지 않도록 합니다.
클라우드 서비스(추가 지원)에 대해 원격 디버깅을 사용하려면
기본 msvsmon 포트에 대한 ServiceDefinition.csdef에 엔드포인트를 추가합니다. Visual Studio 2019의 경우 4024입니다.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4024" localPort="4024" /> </Endpoints>
참고 항목
다른 버전의 Visual Studio에는 서로 다른 포트 원격 디버거 포트 할당이 있습니다.
Azure 프로젝트의 바로가기 메뉴를 열고, 게시를 선택합니다.
스테이징 환경 및 디버그 구성을 선택합니다.
단지 지침일 뿐입니다. 테스트 환경을 프로덕션 환경에서 실행하도록 선택할 수 있습니다. 그러나 프로덕션 환경에서 원격 디버깅을 사용할 경우 사용자에게 악영향을 끼칠 수 있습니다. 릴리스 구성을 선택할 수도 있지만, 디버그 구성이 디버깅을 더 쉽게 할 수 있습니다.
클라우드 서비스(추가 지원)에 설명된 일반적인 단계를 차례로 수행하지만, 모든 역할에 대해 원격 데스크톱 활성화 체크박스를 꼭 선택하세요.
나중에 해당 가상 머신에 로그인하는 데 필요한 원격 데스크톱 사용자의 사용자 이름과 암호를 만들라는 메시지가 표시됩니다.
다음 화면으로 이동하여 설정을 검토하고, 준비가 되면 게시를 클릭하고 배포가 완료되기를 기다립니다.
Azure Portal에 로그인하고 디버그하려는 클라우드 서비스(추가 지원)로 이동합니다.
왼쪽 창에서 역할 및 인스턴스를 선택한 다음 원격으로 디버깅하려는 역할을 선택합니다.
오른쪽의 역할 인스턴스 팝아웃에서 연결을 클릭하고 연결 단추를 선택하여 가상 머신에 로그인할 수 있는 원격 데스크톱 파일을 다운로드합니다. 이전 단계에서 원격 데스크톱을 사용하도록 설정할 때 만든 자격 증명을 사용하여 로그인합니다.
원격 Azure 가상 머신에서 원격 디버깅에 설명된 대로 Visual Studio 2019 원격 도구를 설치합니다.
가상 머신의 데스크톱에서 D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe 명령을 실행합니다. 관리자 권한으로 실행해야 합니다.
프롬프트를 수락하여 방화벽을 통한 액세스를 허용합니다. msvsmon.exe가 연결을 위해 수신 대기하기 시작했음을 나타내는 메시지가 나타나야 합니다.
Azure 포털에서 리소스 그룹을 열고 클라우드 서비스(추가 지원)의 공용 IP 주소를 가져옵니다.
Azure에서 클라우드 서비스(추가 지원)에 디버거를 연결하려면
참고 항목
가능하면 게시 프로세스에서 선택한 디버그 구성으로 디버그해야 하지만 릴리스 구성을 디버깅하는 경우 Visual Studio에서 Ctrl+Q를 사용하여 "내 코드만"을 검색하고 도구>옵션>디버거>일반에서 내 코드만 사용을 선택 취소합니다. 출시 빌드는 최적화되어 있으므로 "내 코드"로 간주되지 않습니다.
디버그>프로세스에 연결을 선택합니다(또는 Ctrl+Alt+P를 누릅니다).
연결 유형을 기본값으로 유지합니다.
IP 주소와 포트(
{ipaddress}:4024
)를 사용하여 연결 대상을 입력합니다.연결 대상을 자동으로 설정합니다.
원격 데스크톱 사용자와 동일한 자격 증명을 사용하여 로그인합니다.
모든 사용자의 프로세스 표시를 선택합니다. 작업자 역할을 디버깅하는 경우에는 WaWorkerHost.exe에 연결하고, 웹 역할을 디버깅하는 경우에는 w3wp.exe 프로세스에 연결하며, Web API 역할의 경우에는 WaIISHost.exe에 연결합니다.
중단점을 설정하고(해당 줄로 이동하여 F9 키 누르기), 사이트의 공용 URL에 액세스한 후, 디버그할 시나리오를 재현합니다.
클라우드 서비스(추가 지원)에 대해 원격 디버깅을 사용하려면
기본 msvsmon 포트에 대한 ServiceDefinition.csdef에 엔드포인트를 추가합니다. Visual Studio 2022의 경우 4026이고, Visual Studio 2019의 경우 4024입니다.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" /> </Endpoints>
참고 항목
다른 버전의 Visual Studio에는 서로 다른 포트 원격 디버거 포트 할당이 있습니다.
.NET 4.8을 대상으로 하는 경우 ServiceConfiguration.Cloud.cscfg 파일을 열고 Cloud Services(추가 지원)를 게시할 때
ServiceConfiguration
요소의osFamily
특성 값을 확인해야 합니다. .NET 4.8 프로젝트의 경우osFamily="7"
를 사용합니다.Azure 프로젝트의 바로가기 메뉴를 열고, 게시를 선택합니다.
스테이징 환경 및 디버그 구성을 선택합니다.
단지 지침일 뿐입니다. 테스트 환경을 프로덕션 환경에서 실행하도록 선택할 수 있습니다. 그러나 프로덕션 환경에서 원격 디버깅을 사용할 경우 사용자에게 악영향을 끼칠 수 있습니다. 릴리스 구성을 선택할 수도 있지만, 디버그 구성이 디버깅을 더 쉽게 할 수 있습니다.
클라우드 서비스(추가 지원)에 설명된 일반적인 단계를 차례로 수행하지만, 모든 역할에 대해 원격 데스크톱 활성화 체크박스를 꼭 선택하세요.
나중에 해당 가상 머신에 로그인하는 데 필요한 원격 데스크톱 사용자의 사용자 이름과 암호를 만들라는 메시지가 표시됩니다.
다음 화면으로 이동하여 설정을 검토하고, 준비가 되면 게시를 클릭하고 배포가 완료되기를 기다립니다.
Azure Portal에 로그인하고 디버그하려는 클라우드 서비스(추가 지원)로 이동합니다.
왼쪽 창에서 역할 및 인스턴스를 선택한 다음 원격으로 디버깅하려는 역할을 선택합니다.
오른쪽의 역할 인스턴스 팝아웃에서 연결을 클릭하고 연결 단추를 선택하여 가상 머신에 로그인할 수 있는 원격 데스크톱 파일을 다운로드합니다. 이전 단계에서 원격 데스크톱을 사용하도록 설정할 때 만든 자격 증명을 사용하여 로그인합니다.
원격 Azure 가상 머신에서 원격 디버깅에 설명된 대로 Visual Studio 2022 원격 도구를 설치합니다.
가상 머신의 바탕 화면에서 아래의 Visual Studio 설치 폴더
Common7\IDE\Remote Debugger\x64
에서 명령 msvsmon.exe 실행합니다. 관리자 권한으로 실행해야 합니다.프롬프트를 수락하여 방화벽을 통한 액세스를 허용합니다. msvsmon.exe가 연결을 위해 수신 대기하기 시작했음을 나타내는 메시지가 나타나야 합니다.
Azure 포털에서 리소스 그룹을 열고 클라우드 서비스(추가 지원)의 공용 IP 주소를 가져옵니다.
Azure에서 클라우드 서비스(추가 지원)에 디버거를 연결하려면
참고 항목
가능하면 게시 프로세스에서 선택한 디버그 구성으로 디버그해야 하지만 릴리스 구성을 디버깅하는 경우 Visual Studio에서 Ctrl+Q를 사용하여 "내 코드만"을 검색하고 도구>옵션>디버거>일반에서 내 코드만 사용을 선택 취소합니다. 출시 빌드는 최적화되어 있으므로 "내 코드"로 간주되지 않습니다.
디버그>프로세스에 연결을 선택합니다(또는 Ctrl+Alt+P를 누릅니다).
연결 유형을 기본값으로 유지합니다.
IP 주소와 포트(
{ipaddress}:4026
)를 사용하여 연결 대상을 입력합니다.연결 대상을 자동으로 설정합니다.
원격 데스크톱 사용자와 동일한 자격 증명을 사용하여 로그인합니다.
모든 사용자의 프로세스 표시를 선택합니다. 작업자 역할을 디버깅하는 경우에는 WaWorkerHost.exe에 연결하고, 웹 역할을 디버깅하는 경우에는 w3wp.exe 프로세스에 연결하며, Web API 역할의 경우에는 WaIISHost.exe에 연결합니다.
중단점을 설정하고(해당 줄로 이동하여 F9 키 누르기), 사이트의 공용 URL에 액세스한 후, 디버그할 시나리오를 재현합니다.
Azure에서 원격 디버깅의 제한 사항
원격 디버깅에는 다음과 같은 제한 사항이 있습니다.
원격 디버깅을 사용하면 모든 역할에 25개 이상의 인스턴스가 있는 클라우드 서비스를 게시할 수 없습니다.
디버거는 30400에서 30424, 31400에서 31424 및 32400에서 32424의 포트를 사용합니다. 이 포트 중 하나를 사용하려는 경우, 서비스를 게시할 수 없으며, 다음과 같은 오류 메시지 중 하나가 Azure 활동 로그에 표시됩니다.
- .csdef 파일에 대한 .cscfg 파일의 유효성 검사 오류가 발생했습니다.
역할 'role'의 끝점
Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector
에 예약된 포트 범위 'range'가 이미 정의된 포트 또는 범위와 겹칩니다. - 할당하지 못했습니다. 다음에 다시 시도하거나, 가상 컴퓨터 사이즈 또는 역할 인스턴스의 수를 줄이거나 다른 지역에 배포해 보십시오.
- .csdef 파일에 대한 .cscfg 파일의 유효성 검사 오류가 발생했습니다.
역할 'role'의 끝점
Azure App Service 디버깅
Visual Studio의 프로세스에 연결 대화 상자를 사용하여 Azure App Service에서 실행되는 프로그램을 디버그할 수 있습니다.
참고 항목
Visual Studio 2022 17.1부터 Azure App Service에서만 사용할 수 있습니다.
Windows Azure App Service를 디버그하려면
디버그 아래에서 프로세스에 연결을 선택합니다.
연결 유형을 Microsoft Azure App Services로 변경한 다음 찾기..를 선택합니다.
열리는 대화 상자에서 구독 이름을 선택합니다.
참고 항목
Azure App Service가 포함된 구독에 액세스할 수 있는 Microsoft 계정에 로그인해야 합니다.
리소스 그룹 또는 리소스 종류별로 보기를 필터링하거나 이름으로 검색합니다.
다음으로 디버그할 App Service를 선택한 다음 확인을 선택합니다.
이렇게 하면 App Service 원격 디버깅이 가능하며 연결할 수 있는 프로세스 목록이 표시됩니다.
연결할 프로세스를 선택한 다음 연결을 선택하여 디버깅을 시작합니다.
Azure 가상 머신 디버깅
Visual Studio의 서버 탐색기를 사용하여 Azure 가상 머신에서 실행되는 프로그램 디버깅이 가능합니다. Azure 가상 머신에서 원격 디버깅을 사용하면 Azure는 가상 머신에 원격 디버깅 확장을 설치합니다. 그리고 나서, 가상 머신의 프로세스에 연결할 수 있으며 평소대로 디버그할 수 있습니다.
참고 항목
Visual Studio 2019의 클라우드 탐색기를 이용하여 Azure 리소스 관리자 스택으로 생성된 가상 머신의 원격 디버그가 가능합니다. 자세한 내용은 클라우드 탐색기를 사용하여 Azure 리소스 관리를 참조하세요.
Azure 가상 컴퓨터를 디버그하려면
서버 탐색기에서 Virtual Machines 노드를 확장하고 디버깅하려는 Virtual Machines의 노드를 선택합니다.
컨텍스트 메뉴를 열고 디버깅 사용을 선택합니다. 가상 머신 상에 디버깅 사용을 확인하는 메시지가 나오면 예를 선택합니다.
디버깅을 사용할 수 있도록 Azure가 원격 디버깅 확장을 가상 머신에 설치합니다.
원격 디버깅 확장 설치가 끝나면, 가상 머신의 상황에 맞는 메뉴를 열고 디버거 연결...
Azure가 가상 머신에서 프로세스 목록을 가져오고 프로세스에 연결 대화 상자에 이를 표시합니다.
프로세스에 연결 대화 상자에서 디버그하려는 코드의 유형만 표시하도록 결과 목록 제한 선택을 선택합니다. 32비트 또는 64비트 관리 코드 및 네이티브 코드 또는 둘 다 디버그할 수 있습니다.
가상 머신에서 디버그할 프로세스를 선택하고 연결을 선택합니다. 예를 들어, 가상 머신에서 웹앱을 디버그하려면 w3wp.exe 프로세스를 선택합니다. 자세한 내용은 Visual Studio에서 하나 이상의 프로세스 디버그 및 Azure 역할 아키텍쳐를 참조하세요.
디버깅을 위한 웹 프로젝트 및 가상 머신 만들기
Azure 프로젝트를 게시하기 전에, 포함된 환경 - 디버깅 및 테스트 시나리오를 지원하고 테스트 및 모니터링 프로그램을 설치할 수 있는-에서 테스트에 유용한 것을 찾을 수 있습니다. 이러한 테스트를 실행하는 한 가지 방법은 가상 머신에서 앱을 원격으로 디버그합니다.
Visual Studio ASP.NET 프로젝트는 앱 테스트를 위해 사용할 수 있는 편리한 가상 머신을 만드는 옵션을 제공합니다. 가상 머신은 PowerShell, 원격 데스크톱 및 WebDeploy와 같은 일반적으로 필요한 엔드포인트를 포함합니다.
웹 프로젝트 및 디버깅을 위한 가상 컴퓨터를 만들려면
Visual Studio에서 새 ASP.NET 웹 애플리케이션을 만듭니다.
새 ASP.NET 프로젝트 대화 상자의 Azure 섹션에 있는 드롭다운 목록 상자에서 가상 머신을 선택합니다. 원격 리소스 생성 체크박스를 선택된 상태로 둡니다. 확인 을 선택하여 계속합니다.
Azure에 가상 머신 만들기 대화 상자가 나타납니다.
참고 항목
Azure 계정에 로그인하지 않은 경우, 로그인하라는 메시지가 표시됩니다.
가상 머신에 대한 다양한 설정을 선택하고 확인을 선택합니다. 자세한 내용은 Virtual Machines를 참조하세요.
DNS 이름으로 입력한 이름이 가상 컴퓨터의 이름이 됩니다.
Azure는 가상 머신을 만든 후 원격 데스크톱, 웹 배포 등의 엔드포인트를 프로비저닝하고 구성합니다.
가상 머신이 완전히 설정된 뒤에 서버 탐색기에서 가상 머신의 노드를 선택합니다.
컨텍스트 메뉴를 열고 디버깅 사용을 선택합니다. 가상 머신 상에 디버깅 사용을 확인하는 메시지가 나오면 예를 선택합니다.
디버깅을 사용할 수 있도록 Azure가 원격 디버깅 확장을 가상 컴퓨터에 설치합니다.
방법: Visual Studio에서 원클릭 게시를 사용하여 웹 프로젝트 배포에 설명된 대로 프로젝트를 게시합니다. 가상 머신에서 디버깅하고자 하므로 게시 웹 마법사의 설정 페이지에서 구성으로 디버그를 선택합니다. 이 작업은 디버깅하는 동안 코드 기호를 사용할 수 있게 해줍니다.
프로젝트가 이전에 이미 배포된 경우, 파일 게시 옵션에서 대상에서 추가 파일 제거를 선택합니다.
서버 탐색기의 가상 머신의 상황에 맞는 메뉴에서 프로젝트를 게시 한 후 디버거 연결...
Azure가 가상 머신에서 프로세스 목록을 가져오고 프로세스에 연결 대화 상자에 이를 표시합니다.
프로세스에 연결 대화 상자에서 디버그하려는 코드의 유형만 표시하도록 결과 목록 제한 선택을 선택합니다. 32비트 또는 64비트 관리 코드 및 네이티브 코드 또는 둘 다 디버그할 수 있습니다.
가상 머신에서 디버그할 프로세스를 선택하고 연결을 선택합니다. 예를 들어, 가상 머신에서 웹앱을 디버그하려면 w3wp.exe 프로세스를 선택합니다. 자세한 내용은 Visual Studio의 하나 이상의 프로세스 디버그 를 참조하세요.
관련 콘텐츠
Azure Diagnostics를 사용하여 Azure의 역할 내에서 실행되는 코드에서 자세한 정보를 기록합니다. Azure Diagnostics를 사용하여 로깅 데이터 수집을 참조하세요.
다른 원격 디버깅 시나리오는 원격 디버깅을 참조 하세요.