Visual Studio에서 다중 스레드 애플리케이션 디버그
스레드는 운영 체제에서 프로세서 시간을 부여받는 명령 시퀀스입니다. 운영 체제에서 실행되는 모든 프로세스는 최소한 하나의 스레드로 구성됩니다. 프로세스에 스레드가 둘 이상인 경우를 다중 스레드라고 합니다.
다중 프로세서, 다중 코어 프로세서 또는 하이퍼스레딩 프로세스를 갖춘 컴퓨터는 몇 개의 동시 스레드를 실행할 수 있습니다. 많은 스레드를 사용하는 병렬 처리는 프로그램 성능을 크게 향상할 수 있지만 많은 스레드를 추적하기 때문에 디버깅을 더 어렵게 만들 수도 있습니다.
다중 스레딩을 통해 새로운 유형의 잠재적 버그가 도입될 수 있습니다. 예를 들어 둘 이상의 스레드에서 동일한 리소스에 액세스해야 하지만 한 번에 스레드 하나만 안전하게 리소스에 액세스할 수 있습니다. 한 번에 한 스레드만 리소스에 액세스할 수 있게 하려면 특정한 형태의 상호 배제가 필요합니다. 상호 배제가 잘못 구현되면 어떠한 스레드도 실행되지 않는 ‘교착 상태’ 조건이 발생할 수 있습니다. 교착 상태는 종종 디버그하기 어려운 문제입니다.
다중 스레드 앱을 디버깅 도구
Visual Studio는 다중 스레드 앱을 디버그하는 데 사용할 다양한 도구를 제공합니다.
스레드의 경우 스레드 디버깅을 위한 기본 도구는 스레드 창, 소스 창의 스레드 마커, 병렬 스택 창, 병렬 조사식 창, 디버그 위치 도구 모음입니다. 에 대해 자세히 알아보려면 합니다 스레드 창 및 디버그 위치 도구 모음에서 참조 연습: 스레드 창을 사용하여 디버그. 병렬 스택 및 병렬 조사식 창을 사용하는 방법을 알아보려면 다중 스레드 애플리케이션 디버깅 시작을 참조하세요. 두 항목 모두 스레드 마커를 사용하는 방법을 보여 줍니다.
TPL(작업 병렬 라이브러리)이나 동시성 런타임을 사용하는 코드의 경우 디버깅용 기본 도구는 병렬 스택 창, 병렬 조사식 창, 작업 창이며 이러한 도구는 JavaScript도 지원합니다. 시작하려면 연습: 병렬 애플리케이션 디버깅 및 연습: C++ AMP 애플리케이션 디버깅을 참조하세요.
GPU에서 스레드를 디버그하는 경우 기본 도구는 GPU 스레드 창입니다. 방법: GPU 스레드 창 사용을 참조하세요.
프로세스의 경우 기본 도구는 프로세스에 연결 대화 상자, 프로세스 창, 디버그 위치 도구 모음입니다.
Visual Studio에서 제공하는 강력한 중단점 및 추적점은 다중 스레드 애플리케이션을 디버그할 때 유용할 수 있습니다. 중단점 조건 및 필터를 사용하여 개별 스레드에 중단점을 배치합니다. 추적점을 통해 프로그램 실행을 중단 없이 추적하여 교착 상태와 같은 문제를 검토할 수 있습니다. 자세한 내용은 중단점 작업 및 추적점을 참조하세요.
사용자 인터페이스가 있는 다중 스레드 애플리케이션은 특히 디버깅하기 어려울 수 있습니다. 애플리케이션을 다른 컴퓨터에서 실행하면서 원격 디버깅을 사용하는 것이 좋습니다. 자세한 내용은 원격 디버깅을 참조하세요.
다중 스레드 앱 디버깅에 대한 문서
-
병렬 스택 창과 병렬 조사식 창의 기능을 집중적으로 보여 주는 스레드 디버깅 기능 둘러보기입니다.
-
스레드 및 프로세스 디버깅 도구의 기능을 나열합니다.
-
여러 프로세스 디버깅 방법에 대해 설명합니다.
-
스레드 창과 디버그 위치 도구 모음을 사용하는 방법을 보여 주는 연습입니다.
-
병렬 스택 및 작업 창을 사용하는 방법을 보여 주는 연습입니다.
-
디버깅 컨텍스트를 다른 스레드로 전환하는 몇 가지 방법입니다.
-
디버깅 컨텍스트를 다른 스레드로 전환하는 몇 가지 방법입니다.
-
디버깅 도중 특별히 주의하려는 스레드를 표시하거나 플래그를 지정합니다.
-
고성능 클러스터에서 실행되는 애플리케이션을 디버깅하는 방법을 보여 줍니다.
-
네이티브 스레드를 디버깅하는 단순하지만 유용한 방법을 보여 줍니다.
-
스레드 창에 표시되는 스레드에 이름을 지정합니다.
-
스레드 창에 표시되는 스레드에 이름을 지정합니다.
관련 콘텐츠
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기