스레드 창 사용

Posted by RAY.D
2015. 5. 14. 09:54 프로그래밍 도구/Visual Studio
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MSDN 에서 찾은 멀티 스레드 디버그 관련 참조 내용


방법: 스레드 창 사용


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

스레드 창에는 각 행이 응용 프로그램의 스레드를 나타내는 테이블이 있습니다. 기본적으로 이 테이블에는 응용 프로그램의 모든 스레드가 나열되지만 목록을 필터링하여 관심 있는 스레드만 표시할 수 있습니다. 열마다 다른 유형의 정보가 있습니다. 일부 열을 숨길 수도 있습니다. 모든 열을 표시하면 왼쪽부터 다음 정보가 나타납니다.

  • 플래그 열 - 주의해야 할 스레드에 표시할 수 있습니다. 스레드에 플래그를 설정하는 방법에 대한 자세한 내용은 방법: 스레드에 플래그 지정 및 스레드의 플래그 해제를 참조하십시오.

  • 활성 스레드 열 - 노란색 화살표는 활성 스레드를 나타냅니다. 화살표의 윤곽선은 실행이 중단되고 디버거가 실행된 스레드를 나타냅니다.

  • ID 열 - 각 스레드의 식별 번호가 표시됩니다.

  • 관리 ID 열 - 관리되는 스레드의 관리 식별 번호가 표시됩니다.

  • 범주 열 - 사용자 인터페이스 스레드, 원격 프로시저 호출 처리기 또는 작업자 스레드로 스레드가 분류됩니다. 특정 범주는 응용 프로그램의 주 스레드를 식별합니다.

  • 이름 열 - 각 스레드가 이름(있는 경우) 또는 <이름 없음>으로 식별됩니다.

  • 위치 열 - 스레드가 실행 중인 위치가 표시됩니다. 이 위치를 확장하여 스레드의 전체 호출 스택을 표시할 수 있습니다.

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

  • 선호도 마스크 열 - 일반적으로는 숨겨지는 고급 열입니다. 이 열에는 각 스레드에 대한 프로세서 선호도 마스크가 표시됩니다. 다중 프로세서 시스템에서는 선호도 마스크에 따라 스레드가 실행될 수 있는 프로세서가 결정됩니다.

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

  • 프로세스 이름 열 - 각 스레드가 속하는 프로세스가 표시됩니다. 이 열은 여러 프로세스를 디버깅하는 경우에 유용하지만 일반적으로 숨겨져 있습니다.

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

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

열을 표시하거나 숨기려면

  • 스레드 창의 맨 위에 있는 도구 모음에서 을 클릭하고 표시하거나 숨길 열 이름을 선택하거나 선택 취소합니다.

활성 스레드를 전환하려면

  • 다음 단계 중 하나를 수행합니다.

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

    • 스레드를 마우스 오른쪽 단추로 클릭하고 스레드로 전환을 클릭합니다.

      노란색 화살표가 새 활성 스레드 옆에 나타납니다. 화살표의 회색 윤곽선은 실행이 중단되고 디버거가 실행된 스레드를 나타냅니다.

스레드를 그룹화하면 테이블에 각 그룹의 제목이 나타납니다. 제목에는 "작업자 스레드" 또는 "플래그가 해제된 스레드" 등의 그룹 설명과 트리 컨트롤이 포함됩니다. 각 그룹의 멤버 스레드가 그룹 제목 아래에 나타납니다. 그룹에 대한 멤버 스레드를 숨기려면 트리 컨트롤을 사용하여 그룹을 축소합니다.

그룹화가 정렬보다 우선하기 때문에 예를 들어 스레드를 범주별로 그룹화한 다음 각 범주 내의 ID로 정렬할 수 있습니다.

스레드를 정렬하려면

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

    이제 해당 열의 값으로 스레드가 정렬됩니다.

  2. 정렬 순서를 역순으로 바꾸려면 동일한 단추를 다시 클릭합니다.

    목록 맨 위에 나타난 스레드가 이제 맨 아래에 나타납니다.

스레드를 그룹화하려면

  • 스레드 창 도구 모음에서 그룹화 방법 목록을 클릭하고 스레드를 그룹화할 조건을 클릭합니다.

그룹 내에서 스레드를 정렬하려면

  1. 스레드 창의 맨 위에 있는 도구 모음에서 그룹화 방법 목록을 클릭하고 스레드를 그룹화할 조건을 클릭합니다.

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

    이제 해당 열의 값으로 스레드가 정렬됩니다.

모든 그룹을 확장하거나 축소하려면

  • 스레드 창의 맨 위에 있는 도구 모음에서 그룹 확장 또는 그룹 축소를 클릭합니다.

Visual Studio 2012에서 지정된 문자열과 일치하는 스레드를 검색할 수 있습니다. 스레드 창에서 스레드를 검색하면 창의 열에 검색 문자열과 일치하는 모든 스레드가 표시됩니다. 이 정보에는 위치 열의 호출 스택 맨 위에 나타나는 스레드 위치가 포함됩니다. 그러나 기본적으로 전체 호출 스택이 검색되지는 않습니다.

특정 스레드를 검색하려면

  • 스레드 창의 맨 위에 있는 도구 모음에서 검색 상자로 이동하고 다음을 수행합니다.

    • 검색 문자열을 입력하고 Enter 키를 누릅니다.

      - 또는 -

    • 검색 상자 옆의 드롭다운 목록을 클릭하고 이전 검색에서 검색 문자열을 선택합니다.

  • (선택 사항) 검색에 전체 호출 스택을 포함하려면 호출 스택 검색을 선택합니다.

스레드를 중지하면 리소스를 사용할 수 있어도 스레드 실행이 시작되지 않습니다.

네이티브 코드에서는 Windows 함수 SuspendThread와 ResumeThread 또는 MFC 함수 CWinThread::SuspendThread와 CWinThread::ResumeThread를 호출하여 스레드를 일시 중단하거나 다시 시작할 수 있습니다. SuspendThread나 ResumeThread를 호출하는 경우 스레드 창에 나타나는 일시 중단 횟수를 변경할 수 있습니다. 그러나 네이티브 스레드를 중지하거나 재개하는 경우에는 일시 중단된 횟수를 변경하지 않습니다. 네이티브 코드에서는 스레드가 재개되고 일시 중단된 횟수가 0인 경우 이외에는 스레드를 실행할 수 없습니다.

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


스레드 실행을 중지하거나 재개하려면

  • 스레드 창의 맨 위에 있는 도구 모음에서 스레드 중지 또는 스레드 재개를 클릭합니다.

    이 동작은 스레드 창에서 선택되는 스레드에만 적용됩니다.

스레드 창에서 아이콘으로 스레드를 표시하여 특별한 주의가 필요한 스레드에 플래그를 설정할 수 있습니다. 자세한 내용은 방법: 스레드에 플래그 지정 및 스레드의 플래그 해제을 참조하십시오. 스레드 창에서 모든 스레드를 표시하거나 플래그가 지정된 스레드만 표시하도록 선택할 수 있습니다.

플래그가 지정된 스레드만 표시하려면

  • 스레드 창의 왼쪽 위 모퉁이에 있는 플래그 단추를 선택합니다.

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

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

  • 위치 열에서 스레드 위치 옆의 역삼각형을 클릭합니다.

    위치가 확장되어 스레드의 전체 호출 스택이 표시됩니다.

모든 스레드의 호출 스택을 보거나 축소하려면

  • 스레드 창의 맨 위에 있는 도구 모음에서 호출 스택 확장 또는 호출 스택 축소를 클릭합니다.

출처 : https://msdn.microsoft.com/ko-kr/library/w15yf86f.aspx