WinDbg 명령어정리
|
Command |
option |
Desc | |
|
종료 | |||
|
q |
디버깅 종료 | ||
|
qd |
디버깅 종료;연결해제 – User-mode : Target Application은 종료되지 않는다. – Kernel-mode : Debugee OS는 Pending되지 않고 계속해서 동작한다. | ||
|
디버깅 환경정보 | |||
|
vertarget |
타겟 컴퓨터 정보 표시 | ||
|
version |
디버그 환경 정보 표시 | ||
|
.lastevent |
마지막 디버그 이벤트 정보 표시 | ||
|
|| |
디버깅 세션 정보 표시 | ||
|
symble & sorurce | |||
|
.symfix |
MS 심볼경로 설정 | ||
|
.sympath |
심볼경로 확인/설정 | ||
|
!sym noisy |
심볼파일 검색 과정을 출력 | ||
|
!sym quiet |
심볼파일 검색 과정을 출력하지 않음 | ||
|
.srcpath |
.srcpath+ d:\project |
소스경로 설정 | |
|
.srcnoisy |
.srcnoisy 1 |
소스경로 검색 과정을 출력 | |
|
모듈 | |||
|
lm |
로드된 모듈 표시 | ||
|
lm m nt* |
패턴과 일치되는 모듈 표시 | ||
|
v |
모듈 상세정보 표시 | ||
|
!lmi |
!lmi ntdll.dll |
모듈 상세정보 표시 | |
|
.reload |
/f test.sys |
심볼을 즉시 로드 | |
|
/i test.sys |
TimeStamp가 맞지 않아도 강제로 심볼 로드 | ||
|
/user |
[kd] User symbol load | ||
|
x |
x nt!* x *!*abc* x /v nt!NtCreateFile x /t nt!NtCreateFile x /n nt!ntCreate* |
심볼 타입을 표시. 데이터 타입을 표시 이름순으로 정렬 | |
|
ln |
ln [address] |
해당 주소에 근접한 심볼의 정보 표시 | |
|
!dh |
!dh [Option] Address -f Display file headers -s Display Section Headers -a Display all header nformation |
displays the headers for the specified image | |
|
레지스터 | |||
|
r |
레지스터 정보 표시 | ||
|
r $proc |
현재 프로세스의 PEB주소( user-mode) 현재 프로세스의 EPROCESS주소( kernel-mode) | ||
|
r $thread |
현재 스레드의 TEB주소( user-mode) 현재 스레드의 ETHREAD주소( kernel-mode) | ||
|
r $tpid |
현재 프로세스 ID(PID) | ||
|
r $tid |
현재 스레드 ID(TID) | ||
|
언어셈블 | |||
|
u |
f b |
언어셈블 언어셈블(함수전체) 언어셈블(ip이전의 8개 명령어) | |
|
콜스택 | |||
|
k |
[n] p b n v f |
콜스택 정보표시 함수정보 출력 인자표시 프레임번호 FPO정보 표시 스택 사용량 표시 | |
|
break point | |||
|
bp |
bp 0x123456 |
bp 설정 | |
|
bl |
bp 리스트 출력 | ||
|
bc |
bc * | [frame_no] |
bp 삭제 | |
|
bd,be |
bd * | [frame_no] |
bp disable/enable | |
|
bm |
bm notepad!*Win* |
패턴과 일치하는 모든심볼에 bp설정 | |
|
bu |
bu aaa!bbb |
로드되지 않은 심볼에 대한 bp설정 | |
|
ba |
특정 주소에 access시 bp | ||
|
지역변수 | |||
|
dv |
dv modulr!test* /i /V |
심볼유형과 인자유형 표시 변수저장 위치 표시( register or address ) | |
|
데이터유형 | |||
|
dt |
df _EPROCESS 0xaddr dt _PEB @$peb |
주소를 특정 데이터 형으로 변환해서 표시 Current Process PEB정보 디스플레이 | |
|
du dpu |
Unicode string 표시 | ||
|
da dpa |
Ansi string 표시 | ||
|
dc |
|||
|
db |
|||
|
dy |
|||
|
!address |
!address !address [address] |
||
|
dds |
dds [Options] [Range] dds esp esp+100 |
Display Words and Symbols esp 부터 esp+100까지의 값을 출력 - callstack이 깨진경우, stack확인의 용도로 사용할 수 있다 | |
|
프로세스 & 스레드 정보 | |||
|
!peb |
PEB(Process Environment Block)표시 | ||
|
!teb |
TEB(Thread Environment Block) 표시 | ||
|
~*kb |
모든 thread의 콜스택 표시 | ||
|
!gle |
API의 마지막 에러코드 표시 | ||
|
실행 제어 | |||
|
t |
Trace | ||
|
~.t |
다른 스레드를 중지시킨 상태에서 하나의 statementt 실행 | ||
|
g |
|||
|
p |
Step Over | ||
|
gu |
gu ~0 gu |
현재함수가 복귀할 때 까지 실행 스레드 0을 제외한 모든 스레드를 freeze함 | |
|
wt |
-oR |
내부에서 호출된 함수와 함수호출 횟수등의 정보 표시 (특정 API 내부에서 호출되는 함수와 결과를 한눈에 확인 할 수 있다.) | |
|
.cxr |
컨텍스트 변경 | ||
|
!ready |
|||
|
.thread |
|||
|
!thread |
|||
|
.trap |
|||
|
.process |
|||
|
!process |
|||
|
ed |
|||
|
eb |
eb .-6 90 90 90 90 90 90 |
6byte를 NOP(0x90)으로 변경 | |
|
!error |
!error [error code] |
에러코드 정보표시 | |
|
|
|
| |
|
|
|
| |
|
Set Exceptions | |||
|
sxe |
sxe av(0xc0000005) sxe ld:[moduleName] sxe ud:[moduleName] |
Set Exceptions Break when access violation Break when [module] load Break when [module] unlod | |
|
sxd |
sxd av |
Disable Break when av(first chance) | |
|
Create Dump | |||
|
.dump |
/f full user-mode dump /m minidump /u Append date,time,PID |
Create Dump File | |
|
.writemem |
.writemem FileName Range
: Range – BaseAddr L”DumpSize”
.writemem c:\a.dll 0x00030000 L28000 |
writes a section of memory to a file | |
|
WinDBG 설정 | |||
|
.lines -e |
라인정보 표시 | ||
|
.enable_unicode 1 |
Watch, local변수 창에 유니코드 표시 | ||
|
ed Kd_DEFAULT_MASK 8 |
Vista이상: DbgPrint출력 활성화 | ||
'Windows Programming > 디버깅' 카테고리의 다른 글
| [WinDbg] Kernel 모드에서 특정 프로세스 디버깅하기 (0) | 2011.07.05 |
|---|---|
| WOW64 디버깅 (0) | 2011.06.27 |
| [Link] 수동으로 콜 스택 확인하기 (0) | 2009.12.30 |
| 어셈코드 분석 (0) | 2009.07.22 |
| WinDbg Vista에서 디버그 프린트 출력하기 (0) | 2009.04.10 |