다음을 통해 공유


Visual Studio Enterprise용 IntelliTrace(C#, Visual Basic, C++)

IntelliTrace를 사용하여 코드의 실행 기록을 기록하고 추적할 때 애플리케이션을 디버깅하는 데 더 적은 시간을 할애할 수 있습니다. IntelliTrace에서 다음을 수행할 수 있으므로 버그를 쉽게 찾을 수 있습니다.

  • 특정 이벤트 기록

  • 관련 코드, 디버거 이벤트 중에 로컬 창에 표시되는 데이터 및 함수 호출 정보 검사

  • 재현하기 어렵거나 배포에서 발생하는 디버그 오류

Visual Studio Enterprise 버전에서 IntelliTrace를 사용할 수 있습니다(Professional 또는 Community Edition은 사용할 수 없음).

무엇을 하고 싶으세요?

시나리오 제목
IntelliTrace를 사용하여 애플리케이션 디버그:

- 과거의 이벤트를 보여 주세요.
- 과거 이벤트와 함께 통화 정보를 보여주세요.
- IntelliTrace 세션을 저장합니다.
- IntelliTrace에서 수집하는 데이터를 제어합니다.
- IntelliTrace를 사용하여 이전 앱 상태 검사
- 설명서: IntelliTrace 사용
- IntelliTrace 기능
- 기록 디버깅
배포된 애플리케이션에서 IntelliTrace 데이터 수집 - IntelliTrace 독립 실행형 수집기 사용
IntelliTrace 로그 파일(.iTrace 파일)에서 디버깅을 시작합니다. - 저장된 IntelliTrace 데이터 사용

IntelliTrace로 디버그할 수 있는 앱은 무엇인가요?

지원 수준 애플리케이션 형식
전체 지원 - .NET Framework 2.0 이상 버전을 사용하는 Visual Basic 및 Visual C# 애플리케이션
ASP.NET, Microsoft Azure, Windows Forms, WCF, WPF, Windows 워크플로, SharePoint 2010, SharePoint 2013 및 64비트 앱을 비롯한 대부분의 애플리케이션을 디버그할 수 있습니다.
IntelliTrace를 사용하여 SharePoint 애플리케이션을 디버그하려면 연습: IntelliTrace를 사용하여 SharePoint 애플리케이션 디버깅을 참조하세요.
IntelliTrace를 사용하여 Microsoft Azure 앱을 디버그하려면 IntelliTrace 및 Visual Studio를 사용하여 게시된 클라우드 서비스 디버깅을 참조하세요.
제한된 지원 - Windows를 대상으로 하는 C++ 앱은 IntelliTrace 스텝백을 사용하여 스냅샷 보기를 지원합니다. 디버거 및 예외 이벤트만 지원됩니다.
- 로컬 디버깅에서 특정 이벤트(MVC 컨트롤러, ADO.NET 및 HTTPClient 이벤트)에 대해서만 지원되는 .NET Core 및 ASP.NET Core 앱 독립 실행형 수집기는 .NET Core 또는 ASP.NET Core 앱에서 지원되지 않습니다.
- 실험적 기반의 F# 앱
- 이벤트에 대해서만 지원되는 UWP 앱
지원되지 않음 - 기타 언어 및 스크립트
- Windows 서비스, Silverlight, Xbox 또는 Windows Mobile 앱

비고

이미 실행 중인 프로세스를 디버그하려면 IntelliTrace 이벤트만 수집할 수 있습니다(호출 정보 없음). 로컬 컴퓨터에서만 32비트 또는 64비트 프로세스에 연결할 수 있습니다. 프로세스에 연결하기 전에 발생하는 이벤트는 수집되지 않습니다.

IntelliTrace를 사용하여 디버그하는 이유는 무엇인가요?

기존 또는 라이브 디버깅은 이전 이벤트에 대한 제한된 데이터와 함께 애플리케이션의 현재 상태만 표시합니다. 애플리케이션의 현재 상태에 따라 이러한 이벤트를 유추하거나 애플리케이션을 다시 실행하여 이러한 이벤트를 다시 만들어야 합니다.

IntelliTrace는 특정 이벤트 및 데이터를 이러한 시점에 기록하여 이러한 기존 디버깅 환경을 확장합니다. 이렇게 하면 애플리케이션을 다시 시작하지 않고, 특히 버그가 있는 위치를 지나간 경우 애플리케이션에서 발생한 일을 확인할 수 있습니다. IntelliTrace는 기존 디버깅 중에 기본적으로 켜져 있으며 데이터를 자동으로 그리고 보이지 않게 수집합니다. 이렇게 하면 기존 디버깅과 IntelliTrace 디버깅 간에 쉽게 전환하여 기록된 정보를 볼 수 있습니다. IntelliTrace 기능IntelliTrace에서 수집하는 데이터는 무엇인가요?

IntelliTrace는 재현하기 어렵거나 배포에서 발생하는 오류를 디버그하는 데 도움이 될 수도 있습니다. IntelliTrace 데이터를 수집하고 IntelliTrace 로그 파일(.iTrace 파일)에 저장할 수 있습니다. .iTrace 파일에는 예외, 성능 이벤트, 웹 요청, 테스트 데이터, 스레드, 모듈 및 기타 시스템 정보에 대한 세부 정보가 포함되어 있습니다. Visual Studio Enterprise에서 이 파일을 열고, 항목을 선택하고, IntelliTrace로 디버깅을 시작할 수 있습니다. 이렇게 하면 파일의 모든 이벤트로 이동하여 해당 시점에 애플리케이션에 대한 특정 세부 정보를 볼 수 있습니다.

다음 원본에서 IntelliTrace 데이터를 저장할 수 있습니다.

다음은 IntelliTrace가 디버깅에 도움이 되는 몇 가지 예입니다.

  • 애플리케이션에서 데이터 파일이 손상되었지만 이 이벤트가 발생한 위치를 알 수 없습니다.

    IntelliTrace가 없으면 코드를 검토하여 가능한 모든 파일 액세스를 찾고, 해당 액세스에 중단점을 배치하고, 애플리케이션을 다시 실행하여 문제가 발생한 위치를 찾아야 합니다. IntelliTrace를 사용하면 수집된 모든 파일 액세스 이벤트와 각 이벤트가 발생했을 때 애플리케이션에 대한 특정 세부 정보를 볼 수 있습니다.

  • 예외가 발생합니다.

    IntelliTrace가 없으면 예외에 대한 메시지가 표시되지만 예외로 이어진 이벤트에 대한 정보는 많지 않습니다. 호출 스택을 검사하여 예외로 이어진 호출 체인을 확인할 수 있지만 해당 호출 중에 발생한 이벤트 시퀀스는 볼 수 없습니다. IntelliTrace를 사용하면 예외 이전에 발생한 이벤트를 검사할 수 있습니다.

  • 배포된 애플리케이션에서 버그 또는 충돌이 발생합니다.

    Microsoft Azure 기반 앱의 경우 애플리케이션을 게시하기 전에 IntelliTrace 데이터 수집을 구성할 수 있습니다. 애플리케이션이 실행되는 동안 IntelliTrace는 데이터를 .iTrace 파일에 저장합니다. IntelliTrace 및 Visual Studio를 사용하여 게시된 클라우드 서비스 디버그를 참조하세요.

    IIS 7.0, 7.5 및 8.0 및 SharePoint 2010 또는 SharePoint 2013 애플리케이션에서 호스트되는 ASP.NET 웹앱의 경우 단독으로 또는 System Center 2012에서 Microsoft Monitoring Agent를 사용하여 IntelliTrace 데이터를 .iTrace 파일에 저장합니다.

    이 기능은 배포에서 앱 문제를 진단하려는 경우에 유용합니다. IntelliTrace 독립 실행형 수집기 사용을 참조하세요.

IntelliTrace는 어떤 데이터를 수집하나요?

이벤트 정보 수집

기본적으로 IntelliTrace는 디버거 이벤트, 예외, .NET Framework 이벤트 및 디버깅에 도움이 될 수 있는 기타 시스템 이벤트와 같은 IntelliTrace 이벤트만 기록합니다. 항상 수집되는 디버거 이벤트 및 예외를 제외하고 수집하려는 IntelliTrace 이벤트의 종류를 선택할 수 있습니다. IntelliTrace 기능을 참조하세요.

  • 디버거 이벤트

    IntelliTrace는 항상 Visual Studio 디버거에서 발생하는 이벤트를 기록합니다. 예를 들어 애플리케이션을 시작하는 것은 디버거 이벤트입니다. 다른 디버거 이벤트는 이벤트를 중지하므로 애플리케이션이 실행을 중단합니다. 예를 들어 프로그램이 중단점에 도달하거나, 추적점에 적중하거나, Step 명령을 실행합니다.

    기본적으로 성능에 도움이 되도록 IntelliTrace는 디버거 이벤트에 대해 가능한 모든 값을 기록하지 않습니다. 대신 다음 값을 기록합니다.

    • Locals 창의 값. 이러한 값을 보려면 로컬 창을 열어 둡니다.

    • 자동 창이 열려 있을 때만 자동 창에 값이 표시됩니다.

    • 원본 창에서 변수 위에 마우스 포인터를 이동하여 해당 값을 볼 때 나타나는 DataTips의 값입니다. IntelliTrace는 고정된 DataTips에서 값을 수집하지 않습니다.

      IntelliTrace 이벤트 및 스냅샷 모드를 사용하도록 설정하면 IntelliTrace는 각 디버거 중단점단계 이벤트에서 애플리케이션 프로세스의 스냅샷을 만듭니다. 이렇게 하면 창이 열려 있는지 여부에 관계없이 로컬, 자동조사식 창에 값이 기록됩니다. 고정된 데이터 팁의 값도 수집됩니다.

  • 예외

    IntelliTrace는 다음과 같은 종류의 예외에 대한 예외 유형 및 메시지를 기록합니다.

    • 예외가 발생하고 잡히는 처리된 예외

    • 처리되지 않은 예외

  • .NET Framework 이벤트

    기본적으로 IntelliTrace는 가장 일반적인 .NET Framework 이벤트를 기록합니다. 예를 들어 이벤트의 경우 CheckBox.CheckedChanged IntelliTrace는 확인란 상태와 텍스트를 수집합니다.

  • SharePoint 2010 및 SharePoint 2013 애플리케이션 이벤트

    Visual Studio 외부에서 실행되는 SharePoint 2010 및 2013 애플리케이션에 대한 사용자 프로필 이벤트 및 ULS(통합 로깅 시스템) 이벤트의 하위 집합을 기록할 수 있습니다. 이러한 이벤트를 .iTrace 파일에 저장할 수 있습니다. Visual Studio Enterprise 2015 이상 버전, 이전 버전의 Visual Studio Ultimate 또는 추적 모드에서 실행되는 Microsoft Monitoring Agent가 필요합니다.

    .iTrace 파일을 열 때 SharePoint 상관 관계 ID를 입력하여 일치하는 웹 요청을 찾고, 기록된 이벤트를 보고, 특정 이벤트에서 디버깅을 시작합니다. 파일에 처리되지 않은 예외가 포함된 경우 상관 관계 ID를 선택하여 예외 디버깅을 시작할 수 있습니다.

    참조:

스냅샷 캡처

모든 중단점 및 디버거 단계 이벤트에서 스냅샷을 캡처하도록 IntelliTrace를 구성할 수 있습니다. IntelliTrace는 각 스냅샷에서 전체 애플리케이션 상태를 기록하므로 복잡한 변수를 보고 식을 평가할 수 있습니다.

비고

IntelliTrace 독립 실행형 수집기는 스냅샷 캡처를 지원하지 않습니다.

IntelliTrace를 사용하여 이전 앱 상태 검사를 참조하세요.

함수 호출 정보 수집

함수에 대한 호출 정보를 수집하도록 IntelliTrace를 구성할 수 있습니다. 이 정보를 통해 호출 스택의 기록을 볼 수 있으며 코드에서 호출을 한 단계 뒤로 이동 및 전달할 수 있습니다. 각 함수 호출에 대해 IntelliTrace는 다음 데이터를 기록합니다.

  • 함수 이름
  • 함수 진입점에서 매개 변수로 전달되고 함수 종료 지점에서 반환되는 기본 데이터 형식의 값
  • 자동 속성이 읽거나 변경될 때의 값
  • 첫 번째 수준 자식 객체에 대한 포인터이며, null 여부를 제외한 값은 포함되지 않습니다.

비고

IntelliTrace는 배열의 처음 256개 개체와 문자열의 처음 256자만 수집합니다.

기록 디버깅을 사용하여 앱 검사를 참조하세요.

모듈 정보 수집

IntelliTrace에서 수집하는 호출 정보의 양을 제어하려면 관심 있는 모듈만 지정합니다. 이렇게 하면 컬렉션 중에 애플리케이션의 성능을 향상시킬 수 있습니다. IntelliTrace 기능에서 IntelliTrace가 수집하는 정보의 양 제어 섹션을 참조하세요.

IntelliTrace로 인해 애플리케이션 속도가 느려지나요?

기본적으로 IntelliTrace는 선택한 IntelliTrace 이벤트에 대한 데이터만 수집합니다. 코드의 구조와 구성에 따라 애플리케이션 속도가 느려질 수도 있고 느려지지 않을 수도 있습니다. 예를 들어 IntelliTrace에서 이벤트를 자주 기록하는 경우 애플리케이션 속도가 느려질 수 있습니다. 애플리케이션 리팩터링을 고려할 수도 있습니다.

통화 정보를 수집하면 애플리케이션 속도가 크게 느려질 수 있습니다. 디스크에 저장하는 IntelliTrace 로그 파일(.iTrace 파일)의 크기도 증가할 수 있습니다. 이러한 효과를 최소화하려면 관심 있는 모듈에 대해서만 호출 정보를 수집합니다. .iTrace 파일의 최대 크기를 변경하려면 도구, 옵션, IntelliTrace, 고급으로 이동합니다.

블로그

Microsoft DevOps

포럼

Visual Studio 진단