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