2011-03-18 4 views
4

작업 관리자에서 볼 수있는 USER 개체가 새고있는 프로그램이 있습니다. 누출되는 리소스 유형을 확인하는 방법이 있습니까? GDI 누수에 대한 GDI보기와 같은 프로그램을 사용하여 개체 유형별로 분류했습니다. USER 객체에 대해 이와 비슷한 것이 있습니까?Windows USER 개체 누수를 어떻게 추적합니까?

+1

추적하는 데 사용할 Windows 버전을 지정하면 도움이됩니다. Windows 7에는 도움이되는 기본 제공 도구가 있습니다. 필자는 개인적으로 AQTime을 프로파일 러로 사용하는 것을 선호합니다.이 프로파일러는 "누수 탐지"기능을 갖추고 있습니다. – 0xC0000022L

+0

Windows 7을 실행 중입니다. 내장 도구에는 어떤 것이 있습니까? – Ryand

+0

Application Verifier의 줄을 생각하고 있었지만 메모리가 힙 문제 만있는 것은 아닙니다. ETW (Windows 용 이벤트 추적)가 적합한 경로 일 수 있습니다. 혼란을 드려 죄송합니다. – 0xC0000022L

답변

0

windbg이라는 디버거가 있습니다. 이런 종류의 일을 할 수는 있지만 학습 곡선은 엄청납니다.

+0

전에 WinDgb를 사용해 봤지만 이런 식으로 추적하는 방법을 모르겠습니다. – Ryand

+1

내가 필요로하는 windbg 용 누수록 플러그인을 발견했습니다. [http://code.google.com/p/leaktrap/](http://code.google.com/p/leaktrap/) 내 누수가 메뉴 객체로 밝혀졌습니다. – Ryand

2

Create/DestroyWindow를 후킹하여 창 핸들 누수를 추적 한 다음 전달 된 핸들을 추적 할 수 있습니다. 이렇게하면 아직 삭제되지 않은 초과 핸들이 남아있는 WPA에서 ETW 추적 그래프를 쉽게 생성 할 수 있습니다.

는 EasyHook의 내 포크 나중에 승 8에 64를 위해 또한 작품

http://geekswithblogs.net/akraus1/archive/2016/01/30/172079.aspx를 참조하십시오. 다음은 EasyHook 포크의 일부인 ETWStackwalk.exe로 만든 이미지입니다. WPA를 사용하면 AllocSize 열에서 0보다 큰 값을 확인하여 열리고 닫힌 모든 창을 볼 수 있습니다. 그런 다음 여전히 핸들이 열려있는 이벤트를 필터링하고 할당 된 위치에서 직접 호출 스택을 가져옵니다. 지금까지.

enter image description here

당신은 당신이 누출에 대한 책임을 의심 방법에 대한 도구를 확장해야 브러쉬 또는 글꼴 후에 경우. 제시된 접근법은 어떤 메소드가 누수를 생성하는 것으로 의심되고 리소스 할당 및 무료 호출을 후킹 할 수있는 한 모든 리소스 누출을 해결할 수 있습니다.

관련 문제