2010. 4. 5. 17:05

Detect Resoruce Leak

  • Handle leak

    • Process Explorer
      • Process Explorer 은 특정 process에서 사용 중인 handle의 목록을 보여주며, status bar에 전체 handle의 개수를 나타내에 준다.( status bar에서 오른쪽 버튼 클릭 -> Select Status Bar Column -> Check Number of Handles )
      • handle의 증가 추세와 어떤 handle이 원인 인지를 대략적으로 확인이 가능하다.
    • !htrace extension
      • windbg의 extension 명령으로 handle을 trace 하는 기능을 수행한다.
      • 명령어
        • !htrace -enable
          • handle trace를 활성화 시킨다.
          • 현재의 handle trace의 snapshot을 생성한다.
        • !htrace - diff
          • 기존의 snapshot과 현재 상태를 비교하여 OPEN - CLOSE 쌍이 맞지 않는 목록을 보여준다.
      • 사용 방법
        • !htrace -enable -> !htrace => OPEN , CLOSE 의 모든 과정을 화면에 보여줌.
        • !htrace -enalbe -> !htrace -diff => OPEN, CLOSE 가 맞지 않는 handle trace만 화면에 보여줌.
      • 유의 사항
        • 다른 process에 의해서 injected 된 handle인 경우 stack trace가 inject 한 process 것이 나타나기 때문에 stack주소와 symbol이 잘못 표기된다. 이 경우 source process를 디버깅해서 해당 stack 주소를 이용하여 stack trace를 찾아낼수 있다.(ln 명령어 이용)
  • Memory leak