k, kb, kc, kd, kp, kP, kv(디스플레이 스택 백트레이스)
k* 명령은 관련 정보와 함께 지정된 스레드의 스택 프레임을 표시합니다.
사용자 모드, x86 프로세서
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[~Thread] kd [WordCount]
커널 모드, x86 프로세서
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[Processor] kd [WordCount]
사용자 모드, x64 프로세서
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
커널 모드, x64 프로세서
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
사용자 모드, Arm 프로세서
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
커널 모드, 암 프로세서
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
매개 변수
스레드
스택이 표시될 스레드를 지정합니다. 이 매개 변수를 생략하면 현재 스레드의 스택이 표시됩니다. 스레드 구문에 대한 자세한 내용은 스레드 구문을 참조하세요. 사용자 모드에서만 스레드를 지정할 수 있습니다.
프로세서
스택을 표시할 프로세서를 지정합니다. 프로세서 구문에 대한 자세한 내용은 다중 프로세서 구문을 참조하세요.
B
스택 추적의 각 함수에 전달되는 처음 세 개의 매개 변수를 표시합니다.
C
정리된 스택 추적을 표시합니다. 각 표시줄에는 모듈 이름과 함수 이름만 포함됩니다.
P
스택 추적에서 호출되는 각 함수에 대한 모든 매개 변수를 표시합니다. 매개 변수 목록에는 각 매개 변수의 데이터 형식, 이름 및 값이 포함됩니다. p 옵션은 대/소문자를 구분합니다. 이 매개 변수에는 전체 기호 정보가 필요합니다.
P
p 매개 변수와 같이 스택 추적에서 호출되는 각 함수에 대한 모든 매개 변수를 표시합니다. 그러나 P의 경우 함수 매개 변수는 나머지 데이터와 동일한 줄 대신 디스플레이의 두 번째 줄에 인쇄됩니다.
V
FPO(프레임 포인터 누락) 정보를 표시합니다. x86 기반 프로세서의 디스플레이에는 호출 규칙 정보도 포함됩니다.
N
프레임 번호를 표시합니다.
F
인접한 프레임 사이의 거리를 표시합니다. 이 거리는 실제 스택의 프레임을 구분하는 바이트 수입니다.
L
디스플레이에서 소스 줄을 숨깁니다. L은 대/소문자를 구분합니다.
M
디버거 태그 언어를 사용하여 출력을 표시합니다. 디스플레이의 각 프레임 번호는 로컬 컨텍스트를 설정하고 지역 변수를 표시하기 위해 선택할 수 있는 링크입니다. 로컬 컨텍스트에 대한 자세한 내용은 .frame을 참조하세요.
FrameCount
표시할 스택 프레임 수를 지정합니다. n(숫자 기준 설정) 명령을 사용하여 radix를 변경하지 않은 경우 이 숫자를 16진수 형식으로 지정해야 합니다. .kframes(스택 길이 설정) 명령을 사용하여 기본값을 변경하지 않은 경우 기본값은 20(0x14)입니다.
BasePtr
스택 추적에 대한 기본 포인터를 지정합니다. BasePtr 매개 변수는 명령 다음에 등호(=)가 있는 경우에만 사용할 수 있습니다.
StackPtr
스택 추적에 대한 스택 포인터를 지정합니다. StackPtr 및 InstructionPtr을 생략하면 명령은 rsp(또는 esp) 레지스터가 지정하는 스택 포인터와 rip(또는 eip) 레지스터가 지정하는 명령 포인터를 사용합니다.
InstructionPtr
스택 추적에 대한 명령 포인터를 지정합니다. StackPtr 및 InstructionPtr을 생략하면 명령은 rsp(또는 esp) 레지스터가 지정하는 스택 포인터와 rip(또는 eip) 레지스터가 지정하는 명령 포인터를 사용합니다.
WordCount
덤프할 스택의 DWORD_PTR 값 수를 지정합니다. .kframes(스택 길이 설정) 명령을 사용하여 기본값을 변경하지 않는 한 기본값은 20(0x14)입니다.
환경
모드 |
사용자 모드, 커널 모드 |
대상 |
라이브, 크래시 덤프 |
플랫폼 |
모두 |
추가 정보
레지스터 컨텍스트 및 기타 컨텍스트 설정에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.
설명
k, kb, kp, kP 또는 kv 명령을 실행하면 스택 추적이 테이블 형식으로 표시됩니다. 줄 로드를 사용하도록 설정하면 원본 모듈 및 줄 번호도 표시됩니다.
스택 추적에는 스택 프레임, 반환 주소 및 함수 이름에 대한 기본 포인터가 포함됩니다.
kp 또는 kP 명령을 사용하는 경우 스택 추적에서 호출되는 각 함수에 대한 전체 매개 변수가 표시됩니다. 매개 변수 목록에는 각 매개 변수의 데이터 형식, 이름 및 값이 포함됩니다.
이 명령은 느릴 수 있습니다. 예를 들어 MyFunction1이 MyFunction2를 호출하는 경우 이 호출에 전달된 매개 변수를 표시하려면 디버거에 MyFunction1에 대한 전체 기호 정보가 있어야 합니다. 이 명령은 공용 기호에 노출되지 않은 내부 Microsoft Windows 루틴을 완전히 표시하지 않습니다.
kb 또는 kv 명령을 사용하는 경우 각 함수에 전달되는 처음 세 개의 매개 변수가 표시됩니다. kv 명령을 사용하는 경우 FPO 데이터도 표시됩니다.
x86 기반 프로세서에서 kv 명령은 호출 규칙 정보도 표시합니다.
kv 명령을 사용하면 줄 끝에 FPO 정보가 다음 형식으로 추가됩니다.
| FPO 텍스트 | 의미 |
|---|---|
| FPO: [비 Fpo] | 프레임에 대한 FPO 데이터가 없습니다. |
| FPO: [N1,N2,N3] | N1 은 총 매개 변수 수입니다. N2 는 지역 변수에 대한 DWORD 값의 수입니다. N3 은 저장되는 레지스터의 수입니다. |
| FPO: [N1,N2] 트랩프레임 @ 주소 | N1 은 총 매개 변수 수입니다. N2 는 로컬에 대한 DWORD 값의 수입니다. 주소 는 트랩 프레임의 주소입니다. |
| FPO: TaskGate 세그먼트:0 | 세그먼트 는 작업 게이트의 세그먼트 선택기입니다. |
| FPO: [EBP 0xBase] | Base 는 프레임의 기본 포인터입니다. |
kd 명령은 원시 스택 데이터를 표시합니다. 각 DWORD 값은 별도의 줄에 표시됩니다. 해당 줄에 대한 기호 정보가 연결된 기호와 함께 표시됩니다. 이 형식은 다른 k* 명령보다 더 자세한 목록을 만듭니다. kd 명령은 스택 주소를 매개 변수로 사용하는 dds(메모리 표시) 명령과 동일합니다.
함수 프롤로그가 실행되기 전에 함수의 시작 부분에서 k 명령을 사용하면 잘못된 결과가 표시됩니다. 디버거는 프레임 레지스터를 사용하여 현재 백트랙을 계산하며, 이 레지스터는 프롤로그가 실행될 때까지 함수에 대해 올바르게 설정되지 않습니다.
사용자 모드에서 스택 추적은 현재 스레드의 스택을 기반으로 합니다. 스레드에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.
커널 모드에서 스택 추적은 현재 레지스터 컨텍스트를 기반으로 합니다. 레지스터 컨텍스트를 특정 스레드, 컨텍스트 레코드 또는 트랩 프레임과 일치하도록 설정할 수 있습니다.
추가 정보
레지스터 컨텍스트 및 기타 컨텍스트 설정에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.