다중 스레드 응용 프로그램 디버깅
연습: 다중 스레드 응용 프로그램 디버깅
Visual Studio 2012은 다중 스레드 응용 프로그램을 쉽게 디버깅할 수 있도록 향상된 스레드 창과 그 밖의 향상된 사용자 인터페이스를 제공합니다. 이 연습은 몇 분 정도 소요되지만 연습을 완료하면 다중 스레드 응용 프로그램 디버깅을 위한 새로운 인터페이스 기능에 익숙해질 수 있습니다.
연습 프로젝트를 만들려면
파일 메뉴에서 새로 만들기를 선택한 다음 프로젝트를 클릭합니다.
새 프로젝트 대화 상자가 나타납니다.
프로젝트 형식 상자에서 Visual Basic, Visual C#, Visual C++ 등 선택할 언어를 클릭합니다.
템플릿 상자에서 콘솔 응용 프로그램 또는 CLR 콘솔 응용 프로그램을 선택합니다.
이름 상자에 MyThreadWalkthroughApp라는 이름을 입력합니다.
확인을 클릭합니다.
새 콘솔 프로젝트가 나타납니다. 프로젝트가 만들어지면 소스 파일이 나타납니다. 선택한 언어에 따라 소스 파일 이름이 Module1.vb, Program.cs 또는 MyThreadWalkthroughApp.cpp일 수 있습니다.소스 파일에 나타나는 코드를 삭제하고 스레드 만들기 및 시작할 때 데이터 전달 항목의 "스레드 만들기" 단원에 나타나는 예제 코드로 바꿉니다.
파일 메뉴에서 모두 저장을 클릭합니다.
연습을 시작하려면
소스 창에서 다음 코드를 찾습니다.
Thread.Sleep(3000) Console.WriteLine(
디버깅을 시작하려면
Console.WriteLine 문을 마우스 오른쪽 단추로 클릭하고 중단점을 가리킨 다음 중단점 삽입을 클릭합니다.
소스 창 왼쪽의 여백에 빨간 공이 나타납니다. 이 공은 이 위치에 중단점이 설정되었음을 나타냅니다.디버그 메뉴에서 디버깅 시작을 클릭합니다.
디버깅을 시작하면 콘솔 응용 프로그램이 실행되다가 중단점에서 중지됩니다.
이때 콘솔 응용 프로그램 창에 포커스가 있으면 Visual Studio 창을 클릭하여 Visual Studio로 포커스를 되돌립니다.
소스 창에서 다음 코드가 있는 줄을 찾습니다.
Thread.Sleep(5000)
스레드 마커를 찾으려면
스레드 창을 마우스 오른쪽 단추로 클릭한 다음 소스의 스레드 표시를 클릭합니다.
창 왼쪽의 여백을 확인합니다. 이 줄에는 실 모양 아이콘 두 개가 있습니다. 하나는 빨간색이고 다른 하나는 파란색입니다. 스레드 마커는 이 위치에서 스레드가 중지되었음을 나타냅니다. 스레드가 이 위치에서 중지되었을 수 있습니다.스레드 마커에 포인터를 올려 놓습니다. DataTip이 나타납니다. DataTip을 통해 중지된 각 스레드의 이름과 스레드 ID 번호를 알 수 있습니다. 이 경우 이름이 <noname>인 스레드 한 개만 있습니다.스레드 마커를 마우스 오른쪽 단추로 클릭합니다. 바로 가기 메뉴에서 선택 내용을 확인합니다.
이 아이콘이 스레드 마커입니다.
스레드에 플래그를 지정하려면
보기 메뉴에서 도구 모음을 가리킵니다.
디버그 위치 도구 모음이 선택되어 있는지 확인합니다.
디버그 위치 도구 모음으로 이동하여 스레드 목록을 클릭합니다.
목록에 나타나는 스레드 수를 확인합니다.
소스 창으로 돌아가 스레드 마커를 다시 마우스 오른쪽 단추로 클릭합니다.
바로 가기 메뉴에서 플래그를 가리킨 다음 스레드 이름과 ID 번호를 클릭합니다.
디버그 위치 도구 모음으로 돌아가 스레드 목록을 다시 클릭합니다.
플래그가 지정된 스레드만 목록에 나타납니다. 스레드 목록 바로 오른쪽에 플래그 단추가 있습니다. 이전에는 희미하게 표시되던 단추의 플래그 아이콘이 지금은 밝은 빨강으로 표시됩니다.플래그 아이콘에 포인터를 올려 놓습니다.
팝업이 나타납니다. 이 팝업을 통해 스레드 목록의 모드가 플래그가 지정된 스레드만 표시임을 알 수 있습니다.플래그 단추를 클릭하여 모든 스레드 표시 모드로 전환합니다.
스레드 목록을 다시 클릭하고 다시 모든 스레드가 표시되는지 확인합니다.
플래그 단추를 클릭하여 플래그가 지정된 스레드만 표시로 전환합니다.
디버그 메뉴에서 창을 가리킨 다음 스레드를 클릭합니다.
스레드 창이 나타납니다. 스레드 한 개에 중요한 플래그 아이콘이 연결되어 있습니다.소스 창에서 스레드 마커를 다시 마우스 오른쪽 단추로 클릭합니다.
바로 가기 메뉴에서 선택할 수 있는 항목을 확인합니다. 플래그 대신 플래그 해제가 표시됩니다. 플래그 해제를 클릭하지 마십시오.스레드의 플래그를 해제하기 위한 다음 절차로 이동합니다.
스레드의 플래그를 해제하려면
스레드 창에서 플래그가 지정된 스레드에 해당하는 줄을 마우스 오른쪽 단추로 클릭합니다.
바로 가기 메뉴가 표시됩니다. 이 메뉴에 플래그 해제 및 모든 스레드 플래그 해제 옵션이 있습니다.스레드의 플래그를 해제하려면 플래그 해제를 클릭합니다.
빨간색 플래그 아이콘을 클릭합니다.
디버그 위치 도구 모음을 다시 확인합니다. 플래그 단추가 다시 희미해집니다. 플래그가 지정된 스레드의 플래그만 해제됩니다. 플래그가 지정된 스레드가 없으므로 도구 모음은 다시 모든 스레드 표시 모드로 돌아갑니다. 스레드 목록을 클릭하고 모든 스레드가 표시되는지 확인합니다.스레드 창으로 돌아가 정보 열을 검사합니다.
각 열 맨 위의 단추에는 대부분 열을 식별하는 제목이 있습니다. 그러나 왼쪽 첫째 열에는 제목이 없습니다. 대신 플래그 윤곽선에 해당하는 아이콘이 있습니다. 스레드 목록의 각 행에도 같은 윤곽선이 있습니다. 이 윤곽선은 스레드의 플래그가 해제되었음을 나타냅니다.목록 아래쪽에서 둘째 스레드와 셋째 스레드의 플래그 윤곽선을 클릭합니다.
플래그 아이콘은 빈 윤곽선 대신 빨간색으로 변합니다.
플래그 열 맨 위의 단추를 클릭합니다.
단추를 클릭하면 스레드 목록의 순서가 변경됩니다. 스레드 목록은 플래그가 지정된 스레드가 맨 위에 오도록 정렬됩니다.플래그 열 맨 위의 단추를 다시 클릭합니다.
정렬 순서가 다시 변경됩니다.
스레드 창에 대해 자세히 알아 보려면
스레드 창에서 왼쪽 셋째 열을 확인합니다. 이 열의 맨 위에 있는 단추에 ID라고 표시되어 있습니다.ID를 클릭합니다.
스레드 목록이 스레드 ID 번호순으로 정렬됩니다.
목록의 스레드를 마우스 오른쪽 단추로 클릭합니다. 바로 가기 메뉴에서 16진수 표시를 클릭합니다.스레드 ID 번호 형식이 변경됩니다.
목록의 스레드에 마우스 포인터를 올려 놓습니다.
잠시 후 DataTip이 나타납니다. 여기에 스레드의 부분 호출 스택이 표시됩니다.범주 레이블이 있는 왼쪽에서 넷째 열을 확인합니다. 스레드가 범주로 분류되어 있습니다.프로세스에서 만든 첫째 스레드를 주 스레드라고 합니다. 스레드 목록에서 주 스레드를 찾습니다.주 스레드를 마우스 오른쪽 단추로 클릭하고 스레드로 전환을 클릭합니다.
경고 대화 상자가 나타납니다. 이 대화 상자에서 Visual Studio가 주 스레드의 소스 코드를 표시할 수 없음을 알 수 있습니다.확인을 클릭합니다.
호출 스택 창과 디버그 위치 도구 모음을 확인합니다.
호출 스택 창의 내용이 변경되었습니다.
스레드를 전환하려면
스레드 창에서 왼쪽 둘째 열을 확인합니다. 이 열의 맨 위에 있는 단추에는 텍스트나 아이콘이 없습니다. 이 열은 활성 스레드 열입니다.활성 스레드 열의 스레드 하나에 노랑 화살표가 있습니다. 이 화살표는 활성 스레드 표시기입니다.활성 스레드 표시기가 있는 스레드 ID 번호를 메모합니다. 활성 스레드 표시기를 다른 스레드로 이동하겠지만 작업이 끝나면 다시 돌려 놓아야 합니다.다른 스레드를 마우스 오른쪽 단추로 클릭하고 스레드로 전환을 클릭합니다.
소스 창에서 호출 스택 창을 확인합니다. 내용이 변경되었습니다.디버그 위치 도구 모음을 확인합니다. 여기서도 활성 스레드가 변경되었습니다.디버그 위치 도구 모음으로 이동합니다. 스레드 상자를 클릭하고 드롭다운 목록에서 다른 스레드를 선택합니다.스레드 창을 확인합니다. 활성 스레드 표시기가 변경되었습니다.소스 창에서 스레드 마커를 마우스 오른쪽 단추로 클릭합니다. 바로 가기 메뉴에서 전환을 가리킨 다음 스레드 이름과 ID 번호를 클릭합니다.스레드 창, 디버그 위치 도구 모음의 스레드 상자, 소스 창의 스레드 표시기를 사용하여 활성 스레드를 변경하는 방법을 살펴 보았습니다.
스레드 표시기를 사용하면 특정 위치에서 중지된 스레드로만 전환할 수 있습니다. 스레드 창 및 디버그 위치 도구 모음을 사용하면 임의의 스레드로 전환할 수 있습니다.
'프로그래밍 도구 > Visual Studio' 카테고리의 다른 글
솔루션의 경로를 임의로 바꾼 경우 (6) | 2015.09.30 |
---|---|
Visual Studio Tip #004: 파일 하나를 두 개 창에서 동시 보기 (6) | 2015.08.13 |
스레드 창 사용 (6) | 2015.05.14 |
[vs] visual studio 폴딩 접기/펴기 단축키 (319) | 2015.05.06 |
비쥬얼 스튜디오 디버깅 팁 ( Visual Studio Debugging Tips ) (6) | 2015.04.30 |