Visual Studio에서 다중 스레드 애플리케이션 디버그

스레드는 운영 체제에서 프로세서 시간을 부여받는 명령 시퀀스입니다. 운영 체제에서 실행되는 모든 프로세스는 최소한 하나의 스레드로 구성됩니다. 프로세스에 스레드가 둘 이상인 경우를 다중 스레드라고 합니다.

다중 프로세서, 다중 코어 프로세서 또는 하이퍼스레딩 프로세스를 갖춘 컴퓨터는 몇 개의 동시 스레드를 실행할 수 있습니다. 많은 스레드를 사용하는 병렬 처리는 프로그램 성능을 크게 향상할 수 있지만 많은 스레드를 추적하기 때문에 디버깅을 더 어렵게 만들 수도 있습니다.

다중 스레딩을 통해 새로운 유형의 잠재적 버그가 도입될 수 있습니다. 예를 들어 둘 이상의 스레드에서 동일한 리소스에 액세스해야 하지만 한 번에 스레드 하나만 안전하게 리소스에 액세스할 수 있습니다. 한 번에 한 스레드만 리소스에 액세스할 수 있게 하려면 특정한 형태의 상호 배제가 필요합니다. 상호 배제가 잘못 구현되면 어떠한 스레드도 실행되지 않는 ‘교착 상태’ 조건이 발생할 수 있습니다. 교착 상태는 종종 디버그하기 어려운 문제입니다.

다중 스레드 앱을 디버깅 도구

Visual Studio는 다중 스레드 앱을 디버그하는 데 사용할 다양한 도구를 제공합니다.

Visual Studio에서 제공하는 강력한 중단점 및 추적점은 다중 스레드 애플리케이션을 디버그할 때 유용할 수 있습니다. 중단점 조건 및 필터를 사용하여 개별 스레드에 중단점을 배치합니다. 추적점을 통해 프로그램 실행을 중단 없이 추적하여 교착 상태와 같은 문제를 검토할 수 있습니다. 자세한 내용은 중단점 작업 및 추적점을 참조하세요.

사용자 인터페이스가 있는 다중 스레드 애플리케이션은 특히 디버깅하기 어려울 수 있습니다. 애플리케이션을 다른 컴퓨터에서 실행하면서 원격 디버깅을 사용하는 것이 좋습니다. 자세한 내용은 원격 디버깅을 참조하세요.

다중 스레드 앱 디버깅에 대한 문서