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
, kp
kP
또는 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
실행되기 전에 함수 시작 부분에 명령을 사용하면 잘못된 결과가 표시됩니다. 디버거는 프레임 레지스터를 사용하여 현재 백트레이스를 계산하며, 이 레지스터는 프롤로그가 실행될 때까지 함수에 대해 올바르게 설정되지 않습니다.
사용자 모드에서 스택 추적은 현재 스레드의 스택을 기반으로 합니다. 스레드에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.
커널 모드에서 스택 추적은 현재 레지스터 컨텍스트를 기반으로 합니다. 특정 스레드, 컨텍스트 레코드 또는 트랩 프레임과 일치하도록 레지스터 컨텍스트를 설정할 수 있습니다.
추가 정보
컨텍스트 등록 및 기타 컨텍스트 설정에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.