다음을 통해 공유


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]

커널 모드, ARM 프로세서

[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(set number base) 명령을 사용하여 radix를 변경하지 않는 한 이 숫자를 16진수 형식으로 지정해야 합니다. .kframes(스택 길이 설정) 명령을 사용하여 기본값을 표시하고 값을 변경합니다.

BasePtr
스택 추적의 기본 포인터를 지정합니다. BasePtr 매개 변수는 명령 다음에 등호(=)가 있는 경우에만 사용할 수 있습니다.

StackPtr
스택 추적에 대한 스택 포인터를 지정합니다. 및 InstructionPtr를 생략 StackPtr 하는 경우 명령은 rsp(또는 esp) 레지스터가 지정하는 스택 포인터와 rip(또는 eip) 레지스터가 지정하는 명령 포인터를 사용합니다.

InstructionPtr
스택 추적에 대한 명령 포인터를 지정합니다. 및 InstructionPtr를 생략 StackPtr 하는 경우 명령은 rsp(또는 esp) 레지스터가 지정하는 스택 포인터와 rip(또는 eip) 레지스터가 지정하는 명령 포인터를 사용합니다.

WordCount
덤프할 스택의 DWORD_PTR 값 수를 지정합니다.

Environment  
모드 사용자 모드, 커널 모드
대상 라이브, 크래시 덤프
플랫폼 모두

설명

, , kb, kpkP또는 kv 명령을 실행k하면 스택 추적이 테이블 형식으로 표시됩니다. 줄 로드를 사용하도록 설정하면 원본 모듈 및 줄 번호도 표시됩니다.

스택 추적에는 스택 프레임의 기본 포인터, 반환 주소 및 함수 이름이 포함됩니다.

또는 kP 명령을 사용하는 kp 경우 스택 추적에서 호출되는 각 함수에 대한 전체 매개 변수가 표시됩니다. 매개 변수 목록에는 각 매개 변수의 데이터 형식, 이름 및 값이 포함됩니다.

명령이 느릴 수 있습니다. 예를 들어 를 호출MyFunction2할 때 MyFunction1 디버거는 이 호출에 전달된 매개 변수를 표시하기 위해 에 대한 MyFunction1 전체 기호 정보가 있어야 합니다. 이 명령은 공용 기호에 노출되지 않는 내부 Microsoft Windows 루틴을 완전히 표시하지 않습니다.

또는 kv 명령을 사용하는 kb 경우 각 함수에 전달되는 처음 세 개의 매개 변수가 표시됩니다. 명령을 사용하는 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 실행되기 전에 함수 시작 부분에 명령을 사용하면 잘못된 결과가 표시됩니다. 디버거는 프레임 레지스터를 사용하여 현재 백트레이스를 계산하며, 이 레지스터는 프롤로그가 실행될 때까지 함수에 대해 올바르게 설정되지 않습니다.

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

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

추가 정보

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