본문 바로가기
Solve to troubleshoot

WinDbg 응답 없거나 멈추는 이유

by 살길바라냐 2019. 10. 2.

WinDbg가 응답이 없는 경우는 대부분 심볼
로드가 너무 오래 걸리는 경우

WinDbg는 지연된(deferred) 심볼로드를 하므로
이런일이 자주 발생하지는 않지만 종종 
어떤 명령을 내린 직후나 디버기를 멈추려고
Ctrl+Break 키를 눌렀을 때
아무런 반응을 보이지 않는 경우가 있다. 

심하면 3~4분, 커널 디버깅일 경우 디버기가
멈춘 채 아무것도 할수 없는 경우도 있다.

이런 경우 WinDbg가 어떤 이유에 의해
현재 로드된 모든 모듈의 심볼 파일을 로드하려고
시도하는 경우이거나 접근할 수 없는
네트워크(끊어진 공유 폴더)에 연결하려고
시도하는 경우다.

로컬 디스크상에 존재하지 않는 심볼 파일은
다운로드를 시도하고 그래도 발견하지 못한
심볼 파일은 할 수 있는 모든 심볼 파일 경로를
동원해 로드하려고 시도한다. 

로드된 모든 모듈에 이 작업이 수행되면 시간이
상당히 걸린다. 

이것을 확인 하려면 !sym  noisy 명령을
사용해보면 된다.

이명령을 수행하면 WinDbg가 심볼을
로드하려고 시도하는 모든 내용이 
명령 창에 나열된다. 

심볼 파일을 찾고 로드하는 메시지가
계속해서 나열될 것이다. 
이 메세지를 잘 살펴보면 어떤 심볼 파일을
로드에 성공했는지 어떤 심볼 파일을
못 찾았는지 확인할 수 있다. 

심볼 파일을 준비하고 심볼 경로를 잘
지정한 것 같은데 심볼을 로드하지 못하는 
경우에도 !sym noisy 명령을 사용해
무엇이 잘못됐는지 확인할 수 있다. 

이렇게 해 놓으면 메시지가 너무 많이 나열되므로
확인할 내용을 모두 확인했으면
!sym quiet 명령으로 다시 나오지 않게 해야 한다.

심볼 로드로 인해 WinDbg가 응답이 없을 때는
인내심이 많다면 기다려도 되지만
멈추고 싶을 때는 Ctrl+Break키를 10~20번 정도
눌러 주면 심볼 로드를 중단하게 할수 있다. 

그래도 멈추지 않는다면 기다리거나,
자체 종료 시켜버리면 된다.

728x90
반응형