windbg 명령어
by 박경원 · Published 2018년 10월 25일 · Updated 2019년 2월 25일
▶ WinDbg 에는 3 종류의 명령어가 있다.
- 일반 명령 : 일반적으로 사용하는 디버깅에 관련된 명령어 들이다. 브레이크 설정(bp), 타겟 제어(p,g) 등등
- 메타 명령 : 디버거에 관련된 명령이다. 명령어 앞에 . 이 붙는다. 디버깅 심벌 경로 설정 (.sympath ), 모듈 심벌 로드 (.reload ) 등등
- 확장 명령 : 외부 dll 로 제작된 명령이다(일종의 플러그인 ). 명령어 앞에 ! 이 붙는다. 예외상황분석( !analyze –v ) , 프로세스 구조체 보기 ( !peb ) 등등
▶ 주요 명령어
- k : stack trace
현재 스레드의 callstack을 출력
k + [옵션] (예 : kbn)
: 프레임번호
ChildEBP : Child 함수의 EBP
RetAddr : Child 함수의 리턴어드레스
Args to Child : Chile 함수에 전달된 아규먼트
맨우측 : Child 함수의 주소.심볼
- ~ : thread control
해당 thread로 Context 스위치 또는 해당 thread에 대한 정보 표시
~ + 스레드 번호 + 명령 (예 : ~7s )
~. : 모든 스레드의 정보 표시
~* : 모든 스레드의 정보 표시(more)
~*k : 모든 스레드의 Call Stack 표시
~7 : 7번 스레드의 정보 표시
~7s : 7번 스레드로 Context Switch. 이후 해당 스레드 Context에서 변수 조회나 Call Stack 확인 등이 가능
~7k : 7번 스레드의 Call Stack 표시
~# : 예외를 일으킨 쓰레드 표시
-
stack trace 에 사용되는 명령어들
-
전체 Thread 확인 : ~
suspend 값 확인( 0이면 동작중인 Thread) - 전체 Thread의 간략한 정보 확인 : ~*
- 해당 Thread 로 Context Switch : ~[TID]s, ~스레드번호s
- 현재 Thread의 Call Stack 표시(frame 번호 확득) : kbn or kvn
- 해당 Call Stack frame 으로 Context 이동 : .frame /c [frame 번호]
- 로컬 변수 확인 : dv
- Call Stack frame reset : .cxr
- 이전 프레임(프레임 번호 큰 쪽)으로 이동할 때는 .frame /c 반복 실행, 나중 프레임(프레임 번
호가 작은 쪽)으로 되돌아가려면 .cxr 후 다시 .frame /c
▶ 명령어표
출처: http://darpangs.tistory.com/entry/WinDbg-명령어-정리-1
| ommand | option | usage | Desc |
| 종료 | |||
| q | 디버깅 종료 | ||
| qd | 디버깅 종료;연결해제 | ||
| 디버깅 환경정보 | |||
| vertarget | 타겟 컴퓨터 정보 표시 | ||
| version | 디버그 환경 정보 표시 | ||
| .lastevent | 마지막 디버그 이벤트 정보 표시 | ||
| sumble & sorurce | |||
| .symfix | MS 심볼경로 설정 | ||
| .sympath | 심볼경로 확인/설정 | ||
| .sym noisy | 심볼파일 검색 과정을 출력 | ||
| .srcpath | 소스경로 설정 | ||
| .srcnoisy | .srcnoisy 1 | 소스경로 검색 과정을 출력 | |
| 모듈 | |||
| lm | l | 로드된 모듈만 표시 | |
| m [pattern] | 패턴과 일치되는 모듈만 표시 | ||
| v | 모듈 상세정보 표시 | ||
| !lmi | !lmi ntdll.dll | 모듈 상세정보 표시 | |
| .reload | /f [m_name] | 심볼을 즉시 로드 | |
| x | X ntdll!* | /v | 심볼 타입을 표시. |
| X *!*abc* | /t | 데이터 타입을 표시 | |
| /n | 이름순으로 정렬 | ||
| ln | ln [address] | 해당 주소에 근접한 심볼의 정보 표시 | |
| 레지스터 | |||
| 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 | FPO정보 표시 | ||
| f | 스택 사용량 표시 | ||
| break point | |||
| bp | bp 0x123456 | bp 설정 | |
| bl | bp 리스트 출력 | ||
| bc | bc * | [frame_no] | |
| bd,be | bc * | [frame_no] | |
| 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 | 주소를 특정 데이터 형으로 변환해서 표시 | |
| du | Unicode string 표시 | ||
| da | Ansi string 표시 | ||
| dc | |||
| db | |||
| dy | |||
| !address | !address | ||
| !address [address] | |||
| 프로세스 & 스레드 정보 | |||
| !peb | PEB(Process Environment Block)표시 | ||
| !teb | TEB(Thread Environment Block) 표시 | ||
| !gle | API의 마지막 에러코드 표시 | ||
| 실행 제어 | |||
| t | Trace | ||
| ~.t | 다른 스레드를 중지시킨 상태에서 하나의 statementt실행 | ||
| g | |||
| p | Step Over | ||
| gu | gu | 현재함수가 복귀할 때 까지 실행 | |
| ~0 gu | 스레드 0을 제외한 모든 스레드를 freeze함 | ||
| wt | 내부에서 호출된 함수와 함수호출 횟수등의 정보 표시 | ||
| .cxr | 컨텍스트 변경 | ||
| !ready | |||
| .thread | |||
| !thread | |||
| .trap | |||
| .process | |||
| !process | |||
| ed | |||
| eb | eb .-6 90 90 90 90 90 90 | 6byte를 NOP(0x90)으로 변경 | |
| !error | !error [error code] | 에러코드 정보표시 |
출처: http://jangpd007.tistory.com/203 [참 놀라운 세상]
<article class="post-364 post type-post status-publish format-standard hentry category-debug"><div class="post-inner group">
<h1 class="post-title entry-title">windbg 명령어</h1>
<p class="post-byline">
by <span class="vcard author">
<span class="fn"><a href="https://appi77.github.io/my-tips/author/appi77/" rel="author" title="박경원이(가) 작성한 글">박경원</a></span>
</span>
·
Published <time class="published" datetime="2018년 10월 25일">2018년 10월 25일</time>
· Updated <time class="updated" datetime="2019년 2월 25일">2019년 2월 25일</time></p>
<div class="clear"></div>
<div class="entry themeform">
<div class="entry-inner">
<h4 align="left"><span lang="EN-US">▶ </span><span style="font-size: 1rem;">WinDbg 에는 3 종류의 명령어가 있다.</span></h4>
<ol><li>일반 명령 : 일반적으로 사용하는 디버깅에 관련된 명령어 들이다. 브레이크 설정(bp), 타겟 제어(p,g) 등등</li>
<li>메타 명령 : 디버거에 관련된 명령이다. 명령어 앞에 . 이 붙는다. 디버깅 심벌 경로 설정 (.sympath ), 모듈 심벌 로드 (.reload ) 등등</li>
<li>확장 명령 : 외부 dll 로 제작된 명령이다(일종의 플러그인 ). 명령어 앞에 ! 이 붙는다. 예외상황분석( !analyze –v ) , 프로세스 구조체 보기 ( !peb ) 등등</li>
</ol><h4 align="left"><span lang="EN-US"> </span><span lang="EN-US">▶ </span><span lang="EN-US">주요 </span><span style="font-size: 1rem;">명령어</span></h4>
<ul><li><strong>k : stack trace</strong><br/>
현재 스레드의 callstack을 출력</li>
</ul><p style="padding-left: 30px;"><strong>k + [옵션] (예 : kbn)</strong></p>
<p id="QYiRbkF" style="padding-left: 60px;"><img alt="" class="alignnone size-full wp-image-391" sizes="(max-width: 575px) 100vw, 575px" src="https://appi77.github.io/my-tips/wordpress/wp-content/uploads/2018/10/img_5bd29f90b246f.png" srcset="https://appi77.github.io/my-tips/wordpress/wp-content/uploads/2018/10/img_5bd29f90b246f.png 575w,https://appi77.github.io/my-tips/wordpress/wp-content/uploads/2018/10/img_5bd29f90b246f-300x76.png 300w"/><br/>
# : 프레임번호<br/>
ChildEBP : Child 함수의 EBP<br/>
RetAddr : Child 함수의 리턴어드레스<br/>
Args to Child : Chile 함수에 전달된 아규먼트<br/>
맨우측 : Child 함수의 주소.심볼</p>
<ul><li><strong>~ : thread control</strong><br/>
해당 thread로 Context 스위치 또는 해당 thread에 대한 정보 표시</li>
</ul><p style="padding-left: 30px;"><strong>~ + 스레드 번호 + 명령 (예 : ~7s )</strong></p>
<p id="QYiRbkF" style="padding-left: 60px;">~. : 모든 스레드의 정보 표시<br/>
~* : 모든 스레드의 정보 표시(more)<br/>
~*k : 모든 스레드의 Call Stack 표시<br/>
~7 : 7번 스레드의 정보 표시<br/>
~7s : 7번 스레드로 Context Switch. 이후 해당 스레드 Context에서 변수 조회나 Call Stack 확인 등이 가능<br/>
~7k : 7번 스레드의 Call Stack 표시<br/><span style="color: #ff0000;">~# : 예외를 일으킨 쓰레드 표시</span></p>
<ul><li><strong>stack trace 에 사용되는 명령어들</strong></li>
</ul><ol><li>전체 Thread 확인 : ~<br/>
suspend 값 확인( 0이면 동작중인 Thread)</li>
<li>전체 Thread의 간략한 정보 확인 : ~*</li>
<li>해당 Thread 로 Context Switch : ~[TID]s, ~스레드번호s</li>
<li>현재 Thread의 Call Stack 표시(frame 번호 확득) : kbn or kvn</li>
<li>해당 Call Stack frame 으로 Context 이동 : .frame /c [frame 번호]</li>
<li>로컬 변수 확인 : dv</li>
<li>Call Stack frame reset : .cxr</li>
<li>이전 프레임(프레임 번호 큰 쪽)으로 이동할 때는 .frame /c 반복 실행, 나중 프레임(프레임 번<br/>
호가 작은 쪽)으로 되돌아가려면 .cxr 후 다시 .frame /c</li>
</ol><p><a href="http://kskang.tistory.com/58">http://kskang.tistory.com/58</a></p>
<div id="megamenu-wp-page">
<div class="hfeed site" id="page">
<div class="wrapper" id="main">
<div class="site-content" id="primary">
<div id="content" role="main">
<article class="post-362 post type-post status-publish format-standard hentry category-debug" id="post-362"><div class="entry-content">
<h4 align="left"><span lang="EN-US">▶ </span><span style="font-size: 1rem;">명령어표</span></h4>
</div>
</article></div>
</div>
</div>
</div>
</div>
<p>출처: <a href="http://darpangs.tistory.com/entry/WinDbg-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-1">http://darpangs.tistory.com/entry/WinDbg-명령어-정리-1</a></p>
<p><span id="more-364"></span></p>
<table border="0" cellpadding="0" cellspacing="0" width="786"><tbody><tr><td height="22" style="text-align: left;" width="72">ommand</td>
<td style="text-align: left;" width="188">option</td>
<td style="text-align: left;" width="97">usage</td>
<td style="text-align: left;" width="429">Desc</td>
</tr><tr><td class="xl69" height="22">종료</td>
<td class="xl69"></td>
<td class="xl69"></td>
<td class="xl69"></td>
</tr><tr><td class="xl66" height="22">q</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">디버깅 종료</td>
</tr><tr><td class="xl66" height="22">qd</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">디버깅 종료;연결해제</td>
</tr><tr><td class="xl68" height="22">디버깅 환경정보</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">vertarget</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">타겟 컴퓨터 정보 표시</td>
</tr><tr><td class="xl66" height="22">version</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">디버그 환경 정보 표시</td>
</tr><tr><td class="xl66" height="22">.lastevent</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">마지막 디버그 이벤트 정보 표시</td>
</tr><tr><td class="xl66" height="22">||</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">디버깅 세션 정보 표시</td>
</tr><tr><td class="xl68" height="22">sumble & sorurce</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">.symfix</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">MS 심볼경로 설정</td>
</tr><tr><td class="xl66" height="22">.sympath</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">심볼경로 확인/설정</td>
</tr><tr><td class="xl66" height="22">.sym noisy</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">심볼파일 검색 과정을 출력</td>
</tr><tr><td class="xl66" height="22">.srcpath</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">소스경로 설정</td>
</tr><tr><td class="xl66" height="22">.srcnoisy</td>
<td class="xl66"></td>
<td class="xl66">.srcnoisy 1</td>
<td class="xl66">소스경로 검색 과정을 출력</td>
</tr><tr><td class="xl68" height="22">모듈</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">lm</td>
<td class="xl66"></td>
<td class="xl66">l</td>
<td class="xl66">로드된 모듈만 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">m [pattern]</td>
<td class="xl66">패턴과 일치되는 모듈만 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">v</td>
<td class="xl66">모듈 상세정보 표시</td>
</tr><tr><td class="xl66" height="22">!lmi</td>
<td class="xl66">!lmi ntdll.dll</td>
<td class="xl66"></td>
<td class="xl66">모듈 상세정보 표시</td>
</tr><tr><td class="xl66" height="22">.reload</td>
<td class="xl66"></td>
<td class="xl66">/f [m_name]</td>
<td class="xl66">심볼을 즉시 로드</td>
</tr><tr><td class="xl66" height="22">x</td>
<td class="xl66">X ntdll!*</td>
<td class="xl66">/v</td>
<td class="xl66">심볼 타입을 표시.</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66">X *!*abc*</td>
<td class="xl66">/t</td>
<td class="xl66">데이터 타입을 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">/n</td>
<td class="xl66">이름순으로 정렬</td>
</tr><tr><td class="xl66" height="22">ln</td>
<td class="xl66"></td>
<td class="xl66">ln [address]</td>
<td class="xl66">해당 주소에 근접한 심볼의 정보 표시</td>
</tr><tr><td class="xl66" height="22">레지스터</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">r</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">레지스터 정보 표시</td>
</tr><tr><td class="xl66" height="22">r $proc</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 프로세스의 PEB주소( user-mode)</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 프로세스의 EPROcESS주소( kernel-mode)</td>
</tr><tr><td class="xl66" height="22">r $thread</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 스레드의 TEB주소( user-mode)</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 스레드의 ETHREAD주소( kernel-mode)</td>
</tr><tr><td class="xl66" height="22">r $tpid</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 프로세스 ID(PID)</td>
</tr><tr><td class="xl66" height="22">r $tid</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">현재 스레드 ID(TID)</td>
</tr><tr><td class="xl66" height="22">언어셈블</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">u</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">언어셈블</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">f</td>
<td class="xl66">언어셈블(함수전체)</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">b</td>
<td class="xl66">언어셈블(ip이전의 8개 명령어)</td>
</tr><tr><td class="xl68" height="22">콜스택</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">k</td>
<td class="xl66"></td>
<td class="xl66">[n]</td>
<td class="xl66">콜스택 정보표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">p</td>
<td class="xl66">함수정보 출력</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">b</td>
<td class="xl66">인자표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">n</td>
<td class="xl66">프레임번호</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">v</td>
<td class="xl66">FPO정보 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">f</td>
<td class="xl66">스택 사용량 표시</td>
</tr><tr><td class="xl66" height="22">break point</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">bp</td>
<td class="xl66">bp 0x123456</td>
<td class="xl66"></td>
<td class="xl66">bp 설정</td>
</tr><tr><td class="xl66" height="22">bl</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">bp 리스트 출력</td>
</tr><tr><td class="xl66" height="22">bc</td>
<td class="xl66">bc * | [frame_no]</td>
<td class="xl66"></td>
<td class="xl66">bp 삭제</td>
</tr><tr><td class="xl66" height="22">bd,be</td>
<td class="xl66">bc * | [frame_no]</td>
<td class="xl66"></td>
<td class="xl66">bp disable/enable</td>
</tr><tr><td class="xl66" height="22">bm</td>
<td class="xl66">bm notepad!*Win*</td>
<td class="xl66"></td>
<td class="xl66">패턴과 일치하는 모든심볼에 bp설정</td>
</tr><tr><td class="xl66" height="22">bu</td>
<td class="xl66">bu aaa!bbb</td>
<td class="xl66"></td>
<td class="xl66">로드되지 않은 심볼에 대한 bp설정</td>
</tr><tr><td class="xl66" height="22">ba</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">특정 주소에 access시 bp</td>
</tr><tr><td class="xl68" height="22">지역변수</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">dv</td>
<td class="xl66">dv modulr!test*</td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">/i</td>
<td class="xl66">심볼유형과 인자유형 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66">/V</td>
<td class="xl66">변수저장 위치 표시( register or address )</td>
</tr><tr><td class="xl67" height="22">데이터유형</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">dt</td>
<td class="xl66">df _EPROCESS 0xaddr</td>
<td class="xl66"></td>
<td class="xl66">주소를 특정 데이터 형으로 변환해서 표시</td>
</tr><tr><td class="xl66" height="22">du</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">Unicode string 표시</td>
</tr><tr><td class="xl66" height="22">da</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">Ansi string 표시</td>
</tr><tr><td class="xl66" height="22">dc</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">db</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">dy</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">!address</td>
<td class="xl66">!address</td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66">!address [address]</td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl67" height="22">프로세스 & 스레드 정보</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">!peb</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">PEB(Process Environment Block)표시</td>
</tr><tr><td class="xl66" height="22">!teb</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">TEB(Thread Environment Block) 표시</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">!gle</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">API의 마지막 에러코드 표시</td>
</tr><tr><td class="xl68" height="22">실행 제어</td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr><tr><td class="xl66" height="22">t</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">Trace</td>
</tr><tr><td class="xl66" height="22">~.t</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">다른 스레드를 중지시킨 상태에서 하나의 statementt실행</td>
</tr><tr><td class="xl66" height="22">g</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">p</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">Step Over</td>
</tr><tr><td class="xl66" height="22">gu</td>
<td class="xl66">gu</td>
<td class="xl66"></td>
<td class="xl66">현재함수가 복귀할 때 까지 실행</td>
</tr><tr><td class="xl66" height="22"></td>
<td class="xl66">~0 gu</td>
<td class="xl66"></td>
<td class="xl66">스레드 0을 제외한 모든 스레드를 freeze함</td>
</tr><tr><td class="xl66" height="22">wt</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">내부에서 호출된 함수와 함수호출 횟수등의 정보 표시</td>
</tr><tr><td class="xl66" height="22">.cxr</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66">컨텍스트 변경</td>
</tr><tr><td class="xl66" height="22">!ready</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">.thread</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">!thread</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">.trap</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">.process</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">!process</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">ed</td>
<td class="xl66"></td>
<td class="xl66"></td>
<td class="xl66"></td>
</tr><tr><td class="xl66" height="22">eb</td>
<td class="xl66">eb .-6 90 90 90 90 90 90</td>
<td class="xl66"></td>
<td class="xl66">6byte를 NOP(0x90)으로 변경</td>
</tr><tr><td class="xl66" height="22">!error</td>
<td class="xl66">!error [error code]</td>
<td class="xl66"></td>
<td class="xl66">에러코드 정보표시</td>
</tr></tbody></table><p>출처: <a href="http://jangpd007.tistory.com/203">http://jangpd007.tistory.com/203</a> [참 놀라운 세상]</p>
<nav class="pagination group"></nav></div>
<div class="clear"></div>
</div>
</div>
</article>