GDI Handle 누수 탐지하기

Posted by 빵빵빵
2014/02/24 10:00 전산(컴퓨터)/PC-Windows



출처 : http://parankiho.tistory.com/entry/GDI-Handle-Leak-Monitoring

새로 오픈한 사이트에서 별 이야기가 없다 했더니, 아니나 다를까.. 클라이언트쪽에 장애가 발생하기 시작했다.
현상은.. 장시간 IE 를 열어놓고 업무 프로그램을 사용하다 보면 갑자기 화면이 하얗게 되면서 더 이상 사용할 수 없어서 IE 를 닫고 다시 열어야 하는 상황이다.

쉽게 말해서 다음 그림처럼 윈도우에서 더 이상 뭔가를 화면에 그리지 못한다는 이야기다.
LG CYON | LGE LH2300 | Normal program | Center-weighted average | 2008:10:16 13:03:47

처음에는 memory leak 을 의심했지만, 속도저하 현상이 발견되지 않는 다는 사용자의 이야기에 GDI 개체쪽의 문제이지 않을까 생각하고 관련 자료를 찾아봤더니. NirSoft 라는 사이트에서 GDIView 라는 쓸만한 녀석이 있네.

설치할 필요도 없고 실행파일만 실행하면, 각 프로세스별로 점유하고 있는 GDI Handle 의 종류와 종류별 갯수, 증감현황 그리고 해당 GDI Handle 의 추가적인 정보(예를 들어 Font Handle 이면 Font 정보)도 보여준다. 물론 Handle ID 도 알 수 있어서 디버깅하기에도 굉장히 유용한 녀석인듯 하다.

프로그램을 받아서 실행하면 다음 그림과 같이 실행된다.


위 그림에서 처럼 상단에는 프로세스가 나열되고, 각 프로세스마다 사용하고 있는 GDI Handle 의 종류/개수가 보여진다. 옵션에 따라 refresh 가 자동으로 되기도 하며, 화면상에 [] 로 표시되는 부분은 증감개수를 나타낸다.

하단에는 상단에서 선택한 프로세스가 사용하는 Handle 의 상세정보를 보여준다.

특정 프로그램의 GDI Handle 의 누수가 의심된다면 GDIView 를 통해서 어떤 GDI Handle 이 누수를 발생시키는지 보다 쉽게 찾을 수 있다. 물론 그 이전에 Process Explorer 를 이용해서 GDI Handle 의 누수인지, 단순한 메모리 누수인지 판단하는 것이 필요하겠지만 말이다.
2014/02/24 10:00 2014/02/24 10:00

이 글에는 트랙백을 보낼 수 없습니다