다중 스레드 응용 프로그램 디버깅
스레드는 운영 체제에서 프로세서 시간을 할당받는 명령 시퀀스입니다. 운영 체제에서 실행되는 모든 프로세스는 최소한 하나의 스레드로 구성됩니다. 프로세스에 스레드가 둘 이상인 경우를 다중 스레드라고 합니다.
다중 프로세서, 다중 코어 프로세서 또는 하이퍼스레드 프로세스를 갖춘 컴퓨터는 여러 스레드를 동시에 실행할 수 있습니다. 여러 스레드를 병렬 처리하면 프로그램 성능이 크게 향상되지만, 여러 스레드를 추적해야 하므로 디버깅이 어려워질 수도 있습니다.
또한 다중 스레드로 인해 새로운 종류의 버그가 생길 수 있습니다. 예를 들어 둘 이상의 스레드에서 같은 리소스에 액세스해야 하지만 한 번에 스레드 중 하나만 리소스에 안전하게 액세스할 수 있는 경우가 많습니다. 한 번에 한 스레드만 리소스에 액세스할 수 있게 하려면 특정한 형태의 상호 제외가 필요합니다. 상호 제외가 잘못 수행되면 어떠한 스레드도 실행될 수 없는 교착 상태 조건이 발생할 수 있습니다. 교착 상태 문제는 특히 디버깅하기 어려울 수 있습니다.
Visual Studio 2010에서는 다중 스레드 디버깅을 보다 쉽게 수행할 수 있도록 스레드 창 및 기타 사용자 인터페이스가 향상되었습니다. 새로운 스레드 관련 인터페이스 기능을 배우는 가장 좋은 방법은 연습을 수행하는 것입니다. 연습: 다중 스레드 응용 프로그램 디버깅를 참조하십시오.
Visual Studio에서 제공하는 강력한 중단점 및 추적점은 다중 스레드 응용 프로그램을 디버깅할 때 매우 유용합니다. 중단점 필터를 사용하면 개별 스레드에 중단점을 배치할 수 있습니다. 방법: 중단점 필터 지정을 참조하십시오.
사용자 인터페이스가 있는 다중 스레드 응용 프로그램은 특히 디버깅하기 어려울 수 있습니다. 이러한 경우 응용 프로그램을 다른 컴퓨터에서 실행하면서 원격 디버깅을 사용하는 것이 좋습니다. 자세한 내용은 원격 디버깅 설치를 참조하십시오.
단원 내용
방법: 스레드 창 사용
스레드 창을 사용하여 스레드를 디버깅하는 유용한 절차를 보여 줍니다.방법: 디버깅 중 다른 스레드로 전환
디버깅 컨텍스트를 다른 스레드로 전환하는 세 가지 방법을 보여 줍니다.방법: 스레드에 플래그 지정 및 스레드의 플래그 해제
디버깅 도중 특별히 주의하려는 스레드를 표시하거나 플래그를 지정합니다.방법: 네이티브 코드에 스레드 이름 설정
스레드 창에 표시되는 스레드에 이름을 지정합니다.방법: 관리 코드에 스레드 이름 설정
스레드 창에 표시되는 스레드에 이름을 지정합니다.연습: 다중 스레드 응용 프로그램 디버깅.
다양한 스레드 디버깅 기능을 안내하고, Visual Studio 2008에서 기능을 사용하는 방법에 중점을 둡니다.방법: 고성능 클러스터에서 디버깅
고성능 클러스터에서 실행되는 응용 프로그램을 디버깅하는 방법을 보여 줍니다.네이티브 코드의 스레드 디버깅 팁
네이티브 스레드를 디버깅하는 단순하지만 유용한 방법을 보여 줍니다.병렬 작업 창 사용
관리 또는 네이티브 작업 개체의 상태 및 다른 유용한 정보를 포함한 모든 목록을 보여 줍니다.병렬 스택 창 사용
단일 뷰에서 다중 스레드 또는 작업의 스택 호출을 보여 주고 스레드 또는 작업 사이의 공통 스택 세그먼트를 병합하기도 합니다.연습: 병렬 응용 프로그램 디버깅
병렬 작업 및 병렬 스택 창을 사용하는 방법을 보여 주는 연습입니다.
관련 단원
방법: 중단점 필터 지정
개별 스레드에 중단점을 배치하려는 경우 중단점 필터를 사용하는 방법을 보여 줍니다.방법: 추적점/중단점 동작 지정
추적점을 통해 프로그램 실행을 중단 없이 추적할 수 있습니다. 이 기능은 교착 상태와 같은 문제를 파악할 때 유용합니다.관리되는 스레딩
.NET Framework 프로그래밍의 스레드 개념에 대해 설명하며, 예제 코드가 포함되어 있습니다.구성 요소에서 다중 스레딩
.NET Framework 구성 요소에서 다중 스레드를 사용하는 방법에 대해 설명합니다.다중 스레딩
MFC를 사용하는 C++ 프로그래머를 위한 스레드 개념 및 예제 코드가 들어 있습니다.방법: 원격 클러스터 응용 프로그램 디버깅
고성능 클러스터에서 실행되는 응용 프로그램에 대한 원격 디버깅을 설정하는 방법을 보여 줍니다.