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
스택 추적에 대한 스택 포인터를 지정합니다. StackPtrInstructionPtr을 생략하면 명령은 rsp(또는 esp) 레지스터가 지정하는 스택 포인터와 rip(또는 eip) 레지스터가 지정하는 명령 포인터를 사용합니다.

InstructionPtr
스택 추적에 대한 명령 포인터를 지정합니다. StackPtrInstructionPtr을 생략하면 명령은 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 명령을 사용하면 잘못된 결과가 표시됩니다. 디버거는 프레임 레지스터를 사용하여 현재 백트랙을 계산하며, 이 레지스터는 프롤로그가 실행될 때까지 함수에 대해 올바르게 설정되지 않습니다.

사용자 모드에서 스택 추적은 현재 스레드의 스택을 기반으로 합니다. 스레드에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.

커널 모드에서 스택 추적은 현재 레지스터 컨텍스트를 기반으로 합니다. 레지스터 컨텍스트를 특정 스레드, 컨텍스트 레코드 또는 트랩 프레임과 일치하도록 설정할 수 있습니다.

추가 정보

레지스터 컨텍스트 및 기타 컨텍스트 설정에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.