방법: 스레드 창 사용

업데이트: 2007년 11월

이 항목은 다음 언어에 적용됩니다.

버전

Visual Basic

C#

C++

Web Developer

Express

항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음

Standard

항목이 적용됨 항목이 적용됨 항목이 적용됨 항목이 적용됨

Pro 및 Team

항목이 적용됨 항목이 적용됨 항목이 적용됨 항목이 적용됨

표의 범례:

항목이 적용됨

해당

항목이 적용되지 않음

해당 없음

항목이 적용되지만 명령은 기본적으로 숨겨짐

명령은 기본적으로 숨겨져 있습니다.

스레드 창에서 디버깅 중인 프로그램의 스레드를 검사하고 조작할 수 있습니다.

스레드 창에는 프로그램에 현재 존재하는 모든 스레드의 목록이 들어 있으며, 각 스레드에 대한 유용한 정보가 목록에 표시됩니다.

  • 이름 및 ID 열에는 스레드를 식별할 수 있도록 스레드 이름 및 ID 번호가 표시됩니다.

  • 우선 순위 열에는 시스템에서 각 스레드에 할당한 우선 순위가 표시됩니다.

  • 일시 중단 열에는 스레드를 현재 실행할 수 있는지 여부를 결정하는 일시 중단 횟수가 표시됩니다. 일시 중단 횟수에 대한 설명은 이 항목에 있는 "스레드 중지 및 재개" 단원을 참조하십시오.

  • 범주 열에서는 스레드가 사용자 인터페이스 스레드, 원격 프로시저 호출 처리기 또는 작업자 스레드로 분류되어 있으며, 이 열에서 주 스레드를 확인할 수 있습니다.

  • 위치 열에는 스레드가 만들어진 소스 위치가 표시됩니다.

  • 가장 왼쪽에 있는 플래그 열은 레이블이 지정되어 있지 않습니다. 검토하려는 스레드에 플래그를 지정하면 플래그 아이콘이 이 열에 나타납니다. 스레드에 플래그를 지정하는 방법에 대한 자세한 내용은 방법: 스레드에 플래그 지정 및 스레드의 플래그 해제를 참조하십시오.

  • 마지막으로, 왼쪽에서 두 번째에 있는 열로, 레이블이 지정되어 있지 않은 활성 스레드 열이 있습니다. 이 열에 있는 노란색 화살표는 활성 스레드를 나타냅니다.

중단 모드나 실행 모드에서 스레드 창을 표시하려면

  • 디버그 메뉴에서 창을 가리킨 다음 스레드를 클릭합니다.

스레드 목록을 정렬하려면

  1. 스레드 창에서 열의 맨 위에 있는 단추를 클릭합니다.

    • 플래그가 지정된 스레드를 목록의 맨 위로 정렬하려면 맨 왼쪽에 있는 단추를 클릭합니다.

    • 활성 스레드를 목록의 맨 위로 정렬하려면 왼쪽에서 두 번째 단추를 클릭합니다.

    • ID 번호가 가장 낮은 스레드를 맨 위로 정렬하려면 ID 단추를 클릭합니다.

    • 스레드를 범주별로 정렬하려면 범주 단추를 클릭합니다. 이렇게 하면 스레드가 기능 범주별로, 사전순으로 정렬됩니다.

    • 스레드를 이름별로 정렬하려면 이름 단추를 클릭합니다.

    • 스레드를 소스 위치별로 정렬하려면 위치 단추를 클릭합니다.

    • 우선 순위가 가장 높은 스레드를 맨 위로 정렬하려면 우선 순위 단추를 클릭합니다.

    • 일시 중단 횟수가 가장 낮은 스레드를 맨 위로 정렬하려면 일시 중단 단추를 클릭합니다.

  2. 정렬 순서를 역순으로 바꾸려면 동일한 단추를 다시 클릭합니다. 예를 들어 스레드 ID 번호를 기준으로 정렬한 경우 ID 번호가 가장 낮은 스레드가 맨 위에 정렬됩니다. ID 단추를 다시 클릭하면 ID 번호가 가장 높은 스레드가 맨 위에 정렬됩니다.

디버깅 컨텍스트를 다른 스레드로 전환하려면

  • 스레드 창에서 스레드를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 스레드로 전환을 선택합니다.

    —또는—

  • 스레드를 두 번 클릭합니다.

    노란색 화살표는 활성 스레드를 나타냅니다.

스레드 중지 및 재개

스레드는 중지하거나 재개할 수 있습니다. 스레드가 중지되면 시스템에서는 리소스를 사용할 수 있어도 스레드의 실행을 시작하지 않습니다.

네이티브 코드에서는 SuspendThread 및 ResumeThread Windows 함수 또는 CWinThread::SuspendThreadCWinThread::ResumeThread MFC 함수를 호출하여 스레드를 일시 중단하거나 다시 시작할 수 있습니다. SuspendThread 또는 ResumeThread를 호출하면 스레드 창에 표시되는 일시 중단 횟수가 변경됩니다. 그러나 네이티브 스레드의 경우 중지하거나 재개해도 일시 중단 횟수가 변경되지 않습니다. 네이티브 코드에서는 스레드가 재개되고 일시 중단 횟수가 0으로 지정되어 있는 경우 이외에는 스레드를 실행할 수 없습니다.

관리 코드에서는 스레드를 중지하거나 재개하면 일시 중단 횟수가 변경됩니다. 관리 코드에서 중지된 스레드에는 일시 중단 횟수가 1로 지정되어 있으며, 네이티브 코드에서 중지된 스레드에는 SuspendThread 호출로 인해 스레드가 일시 중단된 경우 이외에는 일시 중단 횟수가 0으로 지정되어 있습니다.

참고:

네이티브 코드에서 관리 코드로의 호출을 디버깅하는 경우 관리 코드는 호출한 네이티브 코드와 동일한 실제 스레드에서 실행됩니다. 네이티브 스레드를 일시 중단하거나 중지하면 관리 코드도 중지됩니다.

스레드의 실행을 중지하려면

  • 스레드 창에서 스레드를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 중지를 선택합니다.

스레드의 실행을 재개하려면

  • 스레드 창에서 중지된 스레드를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 재개를 선택합니다.

스레드 호출 스택 표시 및 프레임 간 전환

다중 스레드 프로그램에서 각 스레드에는 자신의 고유한 호출 스택이 있습니다. 스레드 창을 사용하여 편리하게 스레드 호출 스택을 볼 수 있습니다.

스레드의 호출 스택을 보려면

  • 스레드 창의 활성 스레드 열에서 검토하려는 스레드에 해당하는 줄에 마우스 포인터를 놓습니다.

    잠시 후 DataTip이 나타납니다. 여기에 해당 스레드에 대한 호출 스택이 표시됩니다.

참고 항목

작업

연습: 다중 스레드 응용 프로그램 디버깅

기타 리소스

다중 스레드 응용 프로그램 디버깅