WinDbg에서 CPU 전환하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

요즘 나오는 컴퓨터들은 기본적으로 CPU의 개수가 2개 이상입니다. 예전에는 물리적인 CPU를 2개 이상 꽂아서 사용했지만, 최근들어서는 물리적인 CPU 하나에 여러개의 코어를 탑재하여 나오고 있습니다(인텔 코어2 듀오, 코어2 쿼드 등). 펜티엄 4때에는 하이퍼쓰레딩이라는 기술이 사용되기도 했습니다.

윈도우는 실제로 CPU가 2개 인 것이나, 코어 2 듀오 CPU를 하나만 꽂았을 때, 펜티엄4의 하이퍼쓰레딩 모두 여러개의 CPU로 인식합니다.



WinDbg를 켜고 !cpuinfo 명령을 입력하면 현재 CPU의 개수를 확인할 수 있습니다.

0: kd> !cpuinfo
CP  F/M/S Manufacturer  MHz PRCB Signature    MSR 8B Signature Features
 0  6,15,11 GenuineIntel 2399 000000b600000000 >000000b600000000<80033fff
 1  6,15,11 GenuineIntel 2399 000000b600000000                   80033fff
 2  6,15,11 GenuineIntel 2399 000000b600000000                   80033fff
 3  6,15,11 GenuineIntel 2399 000000b600000000                   80033fff

코어2 쿼드 CPU에서 !cpuinfo 명령을 실행한 화면입니다. 0번 부터 3번까지 4개의 CPU가 확인되고 있습니다.

WinDbg에서 각 CPU의 레지스터, 스택, IDT 등을 확인하려면 먼저 확인하고자 하는 CPU로 전환해주어야 합니다. ~0s 라고 하면 0번 즉 첫번째 CPU를 선택하는 것입니다. 마찬가지로 1, 2, 3번 CPU로 전환하려면 ~1s, ~2s, ~3s와 같이 입력하면 됩니다.

0: kd> ~0s
0: kd> ~1s
1: kd> ~2s
2: kd> ~3s

Command 창의 kd> 프롬프트에 0:, 1:, 2:, 3:과 같은 숫자들이 현재 선택된 CPU를 뜻합니다.

CPU를 선택할 때마다 WinDbg의 Registers, Calls, Processes and Threads 창이 각 CPU의 내용으로 바뀌는 것을 확인할 수 있습니다.

또는 r 명령으로 레지스터 값 확인, k 명령 시리즈로 스택을 확인할 수 있습니다. 그리고 !idt 명령을 사용하면 선택한 CPU의 IDT를 확인할 수 있습니다.

CPU가 2개 달린 컴퓨터이거나 코어2 듀오 같은 CPU는 CPU가 2개 밖에 없으므로 ~0s, ~1s 처럼 0, 1번 CPU를 선택할 수 있습니다. 현재 CPU 개수를 벗어나면 다음과 같이 출력됩니다.

3: kd> ~4s
4 is not a valid processor number

명령어를 입력하지 않고 CPU를 전환하려면 Processes and Threads 창에서 각 CPU를 클릭하면 됩니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2008-10-20