2012년 7월 3일 화요일

LeakDiag

메모리 누수 탐지 프로그램 : Memory Leakage Detection Program

ftp://ftp.microsoft.com/PSS/Tools/Developer Support Tools/LeakDiag

[LeakDiag 실행 화면]
1. 원하는 프로세스를 선택
2. 원하는 메모리 할당자 유형을 선택
3. Start

시험해 본 프로세스에 문제가 없어서 그런 것일까?
아무런 반응도 없고,
아무런 로그도 남지 않는다.
...ㅠ.ㅠ


임의의 프로그램을 대상으로 사용하는 프로그램이라기 보다는,
스스로 제작한 프로그램에 대한 검증에 적합하다 하겠다.

구체적인 작동 방식을 알지 못한다면,
어떤 유형의 메모리 할당자를 사용하는지 알 수 없을테니 말이다.


하지만 그 보다 궁금한 건,
어떤 원리로 메모리 누수를 탐지하는가 이다.

[실전 윈도우 디버깅]에는 이와 같이 설명하고 있다.
"LeakDiag는 메모리 관련 행위를 수집하는 방식에 있어서 많은 메모리 누수 탐지 툴과 아주 다르다. LeakDiag는 메모리 할당 스택 트레이스를 기록함에 있어서 운영체제의 지원에 의존하기 보다는 메모리 할당자에 대한 호출을 가로채기 위해 마이크로소프트의 디투어(Detours) 기술을 사용한다. 이렇게 함으로써 LeakDiag는 운영체제의 스택 트레이싱 지원 기능을 활성화할 필요가 없다."
또, 디투어에 대해서는 따로 이렇게 설명하고 있다.
" 바이너리 수준에서 기존의 코드를 조율하고 향상시키는 데 있어서 마이크로소프트 디투어(Detours)는 혁신적인 해결책이다. ...중략... 마이크로소프트 디투어를 통해 바이너리 함수를 가로채 원래의 함수를 완전히 대체하거나 일부 코드를 추가한 다음 원래의 코드를 호출할 수도 있는 독자 자신의 디투어 함수를 제공할 수 있다. 디투어는 원래 함수의 최초 몇가지 명령을 새로운 함수로의 무조건 분기로 대체해 마술처럼 보이게 이것을 처리한다. 이 처리가 런타임 시에 일어나며 지속되지 않는다는 사실을 반드시 숙지해야 한다. 이 사실은 동일한 애플리케이션의 다른 인스턴스를 서로 독립적으로 우회할 수 있음을 의미한다."
"마이크로소프트 디투어에 관한 더 많은 정보는  http://research.microsoft.com/en-us/projects/detours/ 를 참조하자."

댓글 없음: