WinDBG
심볼 경로 설정
- .sympath
- .sympath+ 경로
- .reload
콜스택
- k
레지스터
-
.excr
-
.reload
symbol과 source 읽어 온다.
-
.ecxr : (exception context record)
예외가 발생한 컨텍스트 레코드를 보여주고 디버거가 해당 내용을 참조하게 하는 명령
-
k, kb, kn / ~k, ~kb
콜 스택 / 모든 쓰레드 콜 스택
-
~2
제어는 2번 쓰레드로 변경
-
~
쓰레드 목록 확인
-
~.
현재 쓰레드만 확인
-
~[숫자]s
~2s 이면 2번 쓰레드로 변경한다 입니다.
-
??
표현식 평가
??GMemoryManager : 전역 변수를 평가
.sympath | 현재 symbol path 로 설정된 경로를 보거나 설정합니다. |
---|---|
.sympath+ | symbol path 를 기존 설정 뒤에 새로 추가합니다. |
!sym noisy | 설정된 symbol path 에서 symbol 을 어떻게 찾아 읽는지 verbose 하게 알려줍니다. |
.reload | symbol path 에 설정된 symbol 들을 다시 읽습니다. |
.cxr | context record 를 보여주는데, register context 변경점을 초기화할 때 사용합니다. |
.ecxr | exception context record 를 읽어서 보여줍니다. |
k | call stack 을 확인합니다. |
kn | 번호를 붙여서 call stack 을 확인합니다. |
kb | argument 정보와 함께 call stack 을 확인합니다. |
.frame # | call stack 의 frame 을 지정된 번호로 이동합니다. |
.f+ | call stack 을 한 단계 아래로(step into) 들어갑니다. |
.f- | call stack 을 한 단계 위로(step out) 올라옵니다. |
~* cmd | 전 thread 를 대상으로 명령을 요청합니다. 예시) ~* k |
~#s | 특정 번호의 thread 로 전환합니다. 예시) ~11s |
dt | type 정보를 확인합니다. 예시) dt MemoryHeader |
dv | local variable 명령을 확인합니다. |
?? | c++ expression 을 수행합니다. 예시) ?? GMemoryManager |
$! | local scope 에서 symbol 을 검색합니다. 예시) ?? $!mContractor |
!heap | heap 을 조회합니다. |
https://devjino.tistory.com/124
time travel 디버깅이 있던데 꼭 한번 써보고 싶네..
Posted 2024-01-29