다음을 통해 공유


시간 이동 디버깅을 사용하여 Azure VM에서 ASP.NET 앱 기록 및 재생

비고

스냅샷 디버깅은 더 이상 사용되지 않으며 더 이상 최신 버전의 Visual Studio 2022 이상 버전에서 사용할 수 없습니다. 정확한 대체는 없지만 유용한 진단을 제공할 수 있는 다른 도구가 있습니다.

Visual Studio Enterprise의 시간 이동 디버깅은 Azure VM(가상 머신)에서 실행되는 웹앱을 기록한 다음 실행 경로를 정확하게 재구성하고 재생할 수 있습니다. TTD(Time Travel Debugging)가 Visual Studio 2019 Enterprise에 미리 보기 기능으로 추가되었으며 이제 Visual Studio 스냅샷 디버거에 통합되었습니다.

시간 이동 디버깅을 사용하면 각 코드 줄을 원하는 횟수만큼 되감고 재생할 수 있습니다. 이 절차는 프로덕션 환경에서만 발생할 수 있는 문제를 격리하고 식별하는 데 도움이 될 수 있습니다.

시간 이동 디버깅 기록을 캡처해도 앱이 중단되지는 않지만 실행 중인 프로세스에 상당한 오버헤드가 추가됩니다. 속도 저하의 양은 프로세스 크기 및 활성 스레드 수와 같은 요인에 따라 달라집니다.

이 자습서에서는 다음을 수행합니다.

  • TTD를 사용하여 스냅샷 디버거를 시작합니다.
  • 스냅포인트를 설정하고 시간 이동 기록을 수집합니다.
  • 시간 이동 기록을 디버그합니다.

필수 조건

  • Azure 개발 워크로드가 설치된 Visual Studio Enterprise 2019 이상

    Visual Studio 설치 관리자에서 개별 구성 요소 탭의 디버깅 및 테스트 아래에서 스냅샷 디버거가 선택되어 있는지 확인합니다.

  • Azure VM에서 .NET Framework 4.8 이상에서 실행되는 AMD64(ASP.NET) 웹앱입니다.

스냅샷 디버거 연결

  1. 디버그하려는 앱에 대한 프로젝트를 엽니다.

    중요합니다

    Azure VM에 게시된 것과 동일한 버전의 소스 코드를 열어야 합니다.

  2. 스냅샷 디버거 디버그 > 연결을 선택합니다. 웹앱이 배포된 Azure VM과 Azure Storage 계정을 선택한 다음 연결을 선택합니다.

    Azure 리소스 선택을 보여 주는 스크린샷

    중요합니다

    스냅샷 디버거 연결을 처음 선택하면 IIS가 VM에서 자동으로 다시 시작됩니다.

  3. 이제 Visual Studio가 스냅샷 디버깅 모드에 있습니다.

    스냅샷 디버깅 모드를 보여 주는 스크린샷

    비고

    Application Insights 사이트 확장은 스냅샷 디버깅도 지원합니다. 사이트 확장이 만료된 경우 세부 정보를 업그레이드하려면 사이트 확장 업그레이드를 참조하세요.

  4. 모듈에 대한 메타데이터는 처음에 활성화되지 않습니다. 웹앱으로 이동하여 모듈을 로드합니다.

    모듈 창에는 모든 모듈이 Azure VM에 대해 로드될 때 표시됩니다. 모듈 창을 열려면Windows>모듈>를 선택합니다.

    모듈 창을 보여 주는 스크린샷.

    모든 모듈이 로드되면 Visual Studio 도구 모음에서 컬렉션 시작 단추를 선택할 수 있습니다.

스냅 포인트 설정

  1. snappoint를 설정하려면 코드 편집기에서 관심 있는 메서드 옆에 있는 왼쪽 여백을 클릭합니다. 코드가 실행되는지 확인합니다.

    코드 편집기에서 snappoint 설정을 보여 주는 스크린샷

  2. snappoint 속이 빈 구 아이콘을 마우스 오른쪽 단추로 클릭하고 작업을 선택하여 스냅샷 설정 창을 표시합니다.

    스냅샷 설정 창을 보여 주는 스크린샷.

스냅샷 만들기

도구 모음에서 컬렉션 시작을 선택하여 스냅포인트를 켭니다.

스냅포인트를 켤 시작 컬렉션을 선택하는 방법을 보여 주는 스크린샷.

스냅포인트를 켜면, 배치된 코드 줄이 실행될 때 스냅샷을 캡처합니다. 실행에는 서버에 대한 요청이 필요할 수 있습니다. 스냅포인트를 강제로 적중하려면 웹 사이트의 브라우저 보기로 이동하여 필요한 작업을 수행합니다.

기본적으로 snappoint는 하나의 스냅샷만 캡처합니다. 스냅포인트가 스냅샷을 캡처하면 스냅포인트가 꺼집니다. 스냅포인트에서 다른 스냅샷을 캡처하려면 업데이트 컬렉션을 선택하여 스냅포인트를 다시 설정할 수 있습니다.

시간 이동 기록 디버그

  1. 스냅포인트가 적중되면 진단 도구 창에 스냅샷이 나타납니다. 이 창이 열려 있지 않으면 디버그>Windows>진단 도구 표시를 선택하여 엽니다.

    진단 도구 창의 스냅샷을 보여 주는 스크린샷.

  2. 스냅샷 보기를 선택하여 코드 편집기에서 시간 이동 기록을 엽니다.

    • ContinueReverse Continue 버튼을 사용하여 타임 트래블 디버깅으로 기록된 모든 코드 줄을 실행할 수 있습니다.

    • 디버그 도구 모음을 사용하여 다음 문 표시, 단계별 실행, 단계별 건너뛰기, 단계별 나가기, 단계별 뒤로 실행, 단계별 뒤로 건너뛰기, 단계별 뒤로 나가기를 할 수 있습니다.

      디버그 도구 모음을 보여 주는 스크린샷.

    • Visual Studio에서 로컬, 조사식, 호출 스택 창을 사용하고, 식을 평가할 수도 있습니다.

웹 사이트는 여전히 라이브 상태이며 최종 사용자는 시간 여행 디버깅 활동의 영향을 받지 않습니다.

자세한 내용 및 도움말은 Visual Studio에서 스냅샷 디버깅에 대한 문제 해결 및 알려진 문제를 참조하세요.

조건부 스냅포인트 설정

앱에서 특정 상태를 다시 만들기 어려운 경우 조건부 스냅포인트를 사용하는 것이 좋습니다. 조건부 스냅포인트를 사용하면 변수에 특정 값이 있는 경우와 같이 앱이 원하는 상태가 될 때까지 기록 수집을 방지할 수 있습니다. 식, 필터 또는 적중 횟수에 따라 조건을 설정하는 방법에 대한 자세한 내용은 중단점 조건을 참조하세요.

이 자습서에서는 스냅샷 디버거를 사용하여 Azure VM에 대한 시간 이동 기록을 수집하는 방법을 알아보았습니다. 스냅샷 디버깅에 대해 자세히 알아보세요.