WinDbg의 !analyze 가 강력한 이유

당연한 얘기지만, 그 만큼의 수고와 끊임 없는 개선이 따랐기 때문. 이미 10년이 넘은 이 툴은…

WER 팀의 작년 논문(작년 10월의 SOSP09, http://www.sigops.org/sosp/sosp09/papers/glerum-sosp09.pdf)에 따르면,

!analyze is roughly 100,000 lines of code implementing some 500 bucketing heuristics, with roughly one heuristic added per week.

!analyze 명령 (WinDbg)는 대략 십만 줄의 코드로 만들어져 있고, 이는 500 개의 버킷팅 휴리스틱을 구현한다. 그리고 개략적으로 매주 1개의 휴리스틱이 추가된다.

라 한다.[1]

프로그래머가 직접 실행하기도 하는 부분이지만(windbg !analyze), 이 부분은 WER 서비스의 백엔드 서버들도 수행하는 부분이다. 그리고 이 부분에서 계속적으로 사용되고, 결과를 측정하고(!), 이를 반영해서 새로운 휴리스틱을 적용하는 등의 개선이 있었기에 굉장히 훌륭한 디버깅 툴이 된 것.

 

PS. 저 논문 굉장히 재밌다. 세부 내용 말고도 WER 서비스의 개략적인 역사와 통계, 측정치만 봐도 개발자들은 매우 재밌게 볼 수 있음.

  1. 해당 논문 3.2절의 첫 문단 일부 발췌 []

Published by

rein

나는 ...

2 thoughts on “WinDbg의 !analyze 가 강력한 이유”

    1. 그렇긴한데, 얘네는 이걸 WER로 받은 덤프를 서버 단에서 분류하는데 쓰더라고요. 프런트엔드에 있는 IIS들이 덤프 받으면, 뒤에 있는 오프라인 job 서버들이 일괄 처리…(!analyze).

Leave a Reply