Share via


IntelliTrace를 사용한 디버깅

이 항목은 Visual Studio 2010 Ultimate에만 적용됩니다.

Microsoft Visual Studio 2010 Ultimate에서 사용할 수 있는 IntelliTrace를 사용하여 디버깅하면 일반적인 디버거에 비해 응용 프로그램을 보다 효과적으로 파악할 수 있습니다. 일반적인 디버거에서는 현재 시점에서의 응용 프로그램 상태를 보여 주므로 과거에 발생한 이벤트에 대한 정보가 제한적입니다. 현재 응용 프로그램 상태를 기반으로 과거에 발생한 이벤트를 유추하거나, 응용 프로그램을 다시 시작하여 과거 이벤트를 다시 만들어야 합니다. IntelliTrace를 사용하면 과거에 발생한 이벤트와 해당 이벤트가 발생한 컨텍스트를 실제로 확인할 수 있습니다. 따라서 응용 프로그램을 디버깅하는 데 필요한 재시작 횟수와 응용 프로그램을 다시 실행할 때 오류를 재현하지 못할 가능성을 줄일 수 있습니다.

IntelliTrace는 기존에 사용했던 Visual Studio 라이브 디버깅 환경을 확장 및 향상시킨 기능이며, 익숙한 모든 Visual Studio 디버거 기능에도 여전히 액세스할 수 있습니다. IntelliTrace는 백그라운드에서 자동으로 작동하여 디버그 정보를 기록합니다. 응용 프로그램의 과거 상태를 다시 보려면 IntelliTrace 모드로 들어가면 됩니다. 이 모드에서는 원하는 이벤트가 기록된 다양한 시점을 탐색할 수 있습니다.

IntelliTrace 또는 테스트 관리자에 의해 만들어진 .iTrace 확장명의 IntelliTrace 파일을 로드할 수도 있습니다. 이 파일을 사용하면 IntelliTrace의 모든 기능으로 충돌 후 디버깅을 수행할 수 있습니다.

기본 설정을 사용할 경우 IntelliTrace는 응용 프로그램 성능에 최소한의 영향만 줍니다. 따라서 IntelliTrace는 기본적으로 설정되어 있습니다. 디버깅 세션을 시작할 때 IntelliTrace를 사용하지 않도록 설정했더라도 IntelliTrace 정보가 자동으로 수집되므로 필요할 때 이 정보를 사용할 수 있습니다.

보다 빠른 코드 디버깅

IntelliTrace는 디버깅 주기를 단축시켜 시간을 절약해 줍니다. 예를 들어 초기화 중 레지스트리 값을 읽는 응용 프로그램을 디버깅하고 있는데 해당 레지스트리 키가 없을 수 있습니다. 이 문제의 영향은 응용 프로그램을 실행하는 중 훨씬 나중에야 발견될 수 있으며, 이때 레지스트리 값을 읽지 못한 원인을 확인해야 합니다. 일반적인 방법은 응용 프로그램을 다시 시작하고 레지스트리 액세스 지점에 중단점을 추가하는 것입니다. 하지만 응용 프로그램을 다시 실행하는 데는 시간이 소요됩니다. IntelliTrace를 사용하면 이와 같은 여러 재시작 문제를 방지할 수 있습니다. 응용 프로그램을 다시 실행하는 대신 IntelliTrace로 디버깅을 시작하면 모든 레지스트리 액세스를 다시 살펴보고, 관심 있는 부분을 선택한 다음 해당 레지스트리 액세스가 발생했을 때의 응용 프로그램 상태를 검사할 수 있습니다. 예외나 파일 액세스 오류 등의 다른 문제를 디버깅할 때도 이와 같은 방식으로 시간을 절약할 수 있습니다. 자세한 내용은 IntelliTrace를 사용하여 더 빠르게 코드 디버깅을 참조하십시오.

재현할 수 없는 오류 디버깅

IntelliTrace를 사용하면 다른 방법으로는 재현할 수 없는 오류 및 충돌을 디버깅할 수 있습니다. IntelliTrace나 테스트 관리자에 의해 만들어진 로그 파일을 디버깅할 수 있습니다. 테스터는 로그 파일을 테스트 관리자에서 Team Foundation Server 작업 항목 또는 버그에 직접 연결할 수 있으며, 이 작업 항목 또는 버그는 개발자에게 할당될 수 있습니다. IntelliTrace와 테스트 관리자는 이러한 식으로 팀 워크플로에 통합됩니다.

IntelliTrace 파일을 디버깅하는 과정은 덤프 파일을 디버깅하는 과정과 비슷합니다. 하지만 IntelliTrace 파일은 일반적인 덤프 파일보다 훨씬 더 많은 정보를 제공합니다. 덤프 파일은 일반적으로 충돌이 발생한 한 시점에서만의 응용 프로그램 상태 스냅숏을 제공합니다. 하지만 IntelliTrace를 사용하면 과거 기록을 살펴보고 응용 프로그램 실행 중 이전 단계에서 발생한 이벤트와 응용 프로그램 상태를 확인할 수 있습니다. 따라서 덤프 파일에서 디버깅하는 것보다 로그 파일에서 디버깅하는 것이 더 빠르고 쉽습니다.

자세한 내용은 IntelliTrace를 사용하여 재현할 수 없는 오류 디버깅을 참조하십시오.

지원되는 응용 프로그램 및 디버깅 시나리오

IntelliTrace에서는 .NET 버전 2.0, 3.0, 3.5 또는 4를 사용하는 Visual Basic 및 C# 응용 프로그램의 디버깅을 지원합니다. ASP.NET, Windows Forms, WPF, Windows Workflow 및 WCF를 사용하여 만들어진 응용 프로그램을 비롯하여 대부분의 응용 프로그램을 디버깅할 수 있습니다. IntelliTrace에서는 C++, 스크립트 또는 기타 언어의 디버깅은 지원하지 않습니다. F# 응용 프로그램의 디버깅은 시험 차원에서 지원됩니다.

IntelliTrace를 사용하면 Visual Studio에서 시작된 응용 프로그램과 IntelliTrace 또는 테스트 관리자에 의해 만들어진 IntelliTrace 파일을 디버깅할 수 있습니다. Visual Studio 외부에서 시작되고 연결 대상 명령을 사용하여 디버깅된 응용 프로그램에는 IntelliTrace를 사용할 수 없습니다. IntelliTrace에서는 다른 컴퓨터에서 실행 중인 응용 프로그램의 원격 디버깅은 지원하지 않습니다.

IntelliTrace에서는 테스트 관리자에 의해 만들어진 추적 디버깅 로그 파일을 통해 SharePoint 응용 프로그램과 64비트 응용 프로그램의 충돌 후 디버깅을 지원합니다. 하지만 Visual Studio에서 시작된 SharePoint 응용 프로그램 또는 64비트 응용 프로그램의 디버깅은 지원하지 않습니다.

IntelliTrace에서는 Silverlight, Xbox 또는 Windows Mobile 응용 프로그램의 디버깅을 지원하지 않습니다.

수집 수준

IntelliTrace가 사용되는 경우 모든 디버깅 세션 중에 정보가 자동으로 수집됩니다. 이 IntelliTrace 정보를 사용하여 필요할 때 라이브 디버깅에서 IntelliTrace를 사용한 디버깅으로 전환할 수 있습니다. 이 유형의 수집된 정보는 Visual Studio 수준에서 설정한 옵션에 따라 결정됩니다. 이러한 수집 옵션은 모든 프로젝트 및 솔루션에 적용됩니다. 수집 옵션은 디버그 세션과 Visual Studio 세션 간에도 유지됩니다.

기본적으로 IntelliTrace에서는 선택한 IntelliTrace 이벤트에 대해서만 정보를 수집합니다. 앞에서 언급했듯이 이와 같은 기본 정보를 수집하는 것은 응용 프로그램 성능에 최소한의 영향만 줍니다.

디버깅 기능을 향상시키려면 호출 레코드와 해당 매개 변수 및 반환 값뿐 아니라 IntelliTrace 이벤트도 수집하도록 선택하면 됩니다. 이 추가 디버깅 기능은 성능에 영향을 줍니다. 진단 이벤트와 수집 옵션에 대한 자세한 내용은 IntelliTrace 정보 수집을 참조하십시오.

참고 항목

개념

일반적인 개발 작업 수행

기타 리소스

IntelliTrace 확장성을 위한 API 참조