2013. 1. 8. 17:54

problem of memory leak detect( malloc )

http://www.nynaeve.net/?p=209

위 내용 처럼 malloc 은 특정 버젼의 Windows OS에서는 FPO(frame pointer omission) 이 되어 있어서 해당 memory leak 에 대한 call stack 을 얻기가 어려운 점 이 있다.


http://support.microsoft.com/kb/268343/en-us

위 url 에서 windows 2003 sp 이후 부터 malloc의 FPO를 사용하지 않는다고 명시 되어 있다.

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