성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 그냥 RSS Reader 기능과 약간의 UI 편의성 때문에 사용...
[이종효] 오래된 소프트웨어는 보안 위협이 되기도 합니다. 혹시 어떤 기능...
[정성태] @Keystroke IEEE의 문서를 소개해 주시다니... +_...
[손민수 (Keystroke)] 괜히 듀얼채널 구성할 때 한번에 같은 제품 사라고 하는 것이 아...
[정성태] 전각(Full-width)/반각(Half-width) 기능을 토...
[정성태] Vector에 대한 내용은 없습니다. Vector가 닷넷 BCL...
[orion] 글 읽고 찾아보니 디자인 타임에는 InitializeCompon...
[orion] 연휴 전에 재현 프로젝트 올리자 생각해 놓고 여의치 않아서 못 ...
[정성태] 아래의 글에 정리했으니 참고하세요. C# - Typed D...
[정성태] 간단한 재현 프로젝트라도 있을까요? 저런 식으로 설명만 해...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Azure - 비주얼 스튜디오를 이용한 AppService 원격 디버그 방법</h1> <p> 예전에 AppService의 덤프를 떠서 분석하는 방법을 소개했는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/11839'>https://www.sysnet.pe.kr/2/0/11839</a> </pre> <br /> 사실, 할 수만 있다면 덤프보다는 직접 원격 디버깅을 하는 방법이 훨씬 디버깅이 쉽습니다. Azure에는 AppService를 원격으로 디버깅할 수 있는 방법이 제공되는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Remote debugging Azure App Services ; <a target='tab' href='https://devblogs.microsoft.com/premier-developer/remote-debugging-azure-app-services/'>https://devblogs.microsoft.com/premier-developer/remote-debugging-azure-app-services/</a> Azure Remote debugging manually in Visual Studio 2017 ; <a target='tab' href='https://www.locktar.nl/uncategorized/azure-remote-debugging-manually-in-visual-studio-2017/'>https://www.locktar.nl/uncategorized/azure-remote-debugging-manually-in-visual-studio-2017/</a> </pre> <br /> 간단하게 정리해 볼까요? ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> 이를 위해서는 우선 AppService 관리 화면으로 들어가, "Settings" 범주를 보면 "Configuration" 메뉴가 보이는데요, 그걸 선택하면 "Application settings", "General settings", "Default documents", "Path mappings" 링크가 상단에 나옵니다. 그중에서 "General settings" 화면에 다음과 같이 "Remote debugging"을 활성화할 수 있는데요,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='azure_scm_proc_3.png' src='/SysWebRes/bbs/azure_scm_proc_3.png' /><br /> <br /> 정상적으로 설정된 경우, Azure Kudu 화면의 "Process Explorer"에서 다음과 같이 "msvsmon.exe"가 떠 있는 것을 확인할 수 있습니다.<br /> <br /> <img alt='azure_scm_proc_4.png' src='/SysWebRes/bbs/azure_scm_proc_4.png' /><br /> <br /> 위와 같은 상황은 msvsmon.exe가 대기를 하고 있는 것일 뿐 응용 프로그램에 대한 디버깅을 하고 있지는 않습니다.<br /> <br /> 이 상태에서, Visual Studio의 "Debug" / "Attach to Process..." 메뉴를 선택해 "Connection type"을 "Microsoft Azure App Services"로 설정하고 "Find" 버튼을 누르면,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='azure_appservice_dbg_1.png' src='/SysWebRes/bbs/azure_appservice_dbg_1.png' /><br /> <br /> 디버깅할 AppService를 선택하는 화면이 나오고 "OK" 버튼을 누르면 아래와 같이 대상 w3wp.exe가 보입니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='azure_appservice_dbg_2.png' src='/SysWebRes/bbs/azure_appservice_dbg_2.png' /><br /> <br /> "Attach" 버튼을 누르면, 이후 이렇게 BP가 잡히는 디버깅 경험을 할 수 있습니다. ^^<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='azure_appservice_dbg_3.png' src='/SysWebRes/bbs/azure_appservice_dbg_3.png' /><br /> <br /> <hr style='width: 50%' /><br /> <br /> Attach 시켰는데, BP가 비정상적으로 동작한다면?<br /> <br /> <img alt='azure_appservice_dbg_5.png' src='/SysWebRes/bbs/azure_appservice_dbg_5.png' /><br /> <br /> 해당 웹 애플리케이션 배포를 Release로 한 것은 아닌지 확인해 봅니다. 즉, 다음과 같이 Debug 버전으로 빌드해야 정상적으로 BP가 잡힐 수 있습니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='azure_appservice_dbg_4.png' src='/SysWebRes/bbs/azure_appservice_dbg_4.png' /><br /> <br /> <hr style='width: 50%' /><br /> <br /> Attach 시켜 HTTP 호출을 했는데 정상적으로 BP에 디버깅이 걸리지 않는다면?<br /> <br /> AppService Plan에 scale-out을 2개 이상 했다면 요청의 분산으로 인해 우리가 디버깅한 w3wp.exe로 요청이 안 들어올 수 있습니다. 이런 경우에는 디버깅하는 동안만 scale-out을 1로 하든지, 아니면 ARRAffinity 쿠키를 이용해,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Azure - scale-out 상태의 App Service에서 특정 인스턴스에 요청을 보내는 방법 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/13098'>https://www.sysnet.pe.kr/2/0/13098</a> </pre> <br /> 자신이 attach시킨 w3wp.exe로 요청을 전달하도록 맞춰주면 됩니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
3010
(왼쪽의 숫자를 입력해야 합니다.)