2008년 01월 28일
메모리 누수(Leak) 진단도구
Memory Leak Diagnostic Toolkit (이하 LeakDiag)은 메모리 누수가 발생하는 응용프로그램에서 메모리 누수가 발생하는 코드의 라인을 알아내는데 유용합니다. 이 툴은 Visual Basic으로 만든 응용프로그램은 물론 C/C++ 로 만든 응용프로그램에서 메모리 누수를 찾아내는 데 유용합니다.
LeakDiag는 두가지 사용자 환경을 가지고 있습니다. 하나는 그래픽 환경(GUI) 에서 사용할 수 있는 LeakDiag.exe 와 명령프롬프트에서 사용할 수 있는 LDCmd.exe가 있습니다.
아직도 메모리 누수(Memory Leak)이 얼마나 위험한 보안 결함이 되는지는 저도 잘 모릅니다. 다만 메모리 누수는 결국 메모리 할당후 해제를 제대로 못해서 자원을 고갈시키는 원인이 되는 것이 가장 큰 문제가 될 것 같네요.
[사용법]
C:\LDcmd.exe [/log] [/p[/start] [/stop] [/dump] [/a <1-6>] [/c 0|1]]
/log : 로그를 저장할 디렉토리를 지정합니다. 디렉토리의 끝은 반드시 \로 끝나야 합니다.
/p : 프로세스 ID를 지정합니다.
/start : 프로세스 추적을 시작합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/stop : 프로세스 추적을 중지합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/dump : 현재 추적중인 프로세스의 로그파일을 생성합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/a <1-6> : 추적할 메모리 할당 옵션을 정의합니다.
옵션은 다음과 같습니다 :
1 : Virtual Allocator (VirtualAlloc)
2 : Heap Allocator (HeapAlloc)[DEFAULT]
3 : MPHeap Allocator (MPHeap)
4 : COM AllocatorCoTaskMem (CoTask)
5 : COM Private Allocator (PrivateMemAlloc)
6 : C Runtime Allocator (msvcrt new)
/start 옵션이나 /dump 옵션과 같이 사용됩니다.
/c 0|1
로그파일을 만드는 동안 스택 정보와 연결할지 여부를 정합니다.
1은 연결하는 것이고 0은 연결하지 않는 것입니다.
LeakDiag는 두가지 사용자 환경을 가지고 있습니다. 하나는 그래픽 환경(GUI) 에서 사용할 수 있는 LeakDiag.exe 와 명령프롬프트에서 사용할 수 있는 LDCmd.exe가 있습니다.
아직도 메모리 누수(Memory Leak)이 얼마나 위험한 보안 결함이 되는지는 저도 잘 모릅니다. 다만 메모리 누수는 결국 메모리 할당후 해제를 제대로 못해서 자원을 고갈시키는 원인이 되는 것이 가장 큰 문제가 될 것 같네요.
[사용법]
C:\LDcmd.exe [/log] [/p
/log : 로그를 저장할 디렉토리를 지정합니다. 디렉토리의 끝은 반드시 \로 끝나야 합니다.
/p : 프로세스 ID를 지정합니다.
/start : 프로세스 추적을 시작합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/stop : 프로세스 추적을 중지합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/dump : 현재 추적중인 프로세스의 로그파일을 생성합니다. 반드시 /p 옵션과 함께 사용해야 합니다.
/a <1-6> : 추적할 메모리 할당 옵션을 정의합니다.
옵션은 다음과 같습니다 :
1 : Virtual Allocator (VirtualAlloc)
2 : Heap Allocator (HeapAlloc)[DEFAULT]
3 : MPHeap Allocator (MPHeap)
4 : COM AllocatorCoTaskMem (CoTask)
5 : COM Private Allocator (PrivateMemAlloc)
6 : C Runtime Allocator (msvcrt new)
/start 옵션이나 /dump 옵션과 같이 사용됩니다.
/c 0|1
로그파일을 만드는 동안 스택 정보와 연결할지 여부를 정합니다.
1은 연결하는 것이고 0은 연결하지 않는 것입니다.
(예제)
1. 로그파일이 저장될 위치를 지정합니다.
C:\ldcmd /log
E:\logs\ Set log file path to e:\logs\ (로그파일이설정이 되었음을 알립니다. 끝에 \를 꼭 써줘야 함)
2. 프로세스 ID 2244 를 Heap Allocator 옵션으로 추적을 시작, 프로세스 ID는 리소스킷의 tlist.exe나 작업관리자에서 확인할 수 있다.
C:\ldcmd /p 2244 /start /a 2
Sent Start Tracing command for pID 2244 (프로세스 추적이 시작되었음을 알립니다.)
3. 현재 추적중인 프로세스 ID 2244 의 로그 파일을 생성합니다.
C:\ldcmd /p 2244 /dump /a 2 /c 1
Sent Dump Log command for pID 2244 (로그파일이 생성되었음을 알립니다.)
4. 프로세스 추적을 중지
C:\ldcmd /p 2244 /stop
Sent Stop Tracing command for pID 2244 (프로세스 추적이 중지되었음을 알립니다.)


[파일 다운로드]
leakdiag125.msi
# by | 2008/01/28 17:19 | Security 일반 | 덧글(5)





궁금한 것이 하나 있는데,
LeakDiag로 얻은 Log는 XML 파일인데, 이걸 보는 뷰어는 없나요?
스크린 샷을 보면, LeakDiag XML LogFile Analyzer가 있는데, 이건 어디서 구할 수 있나요?
LeakDiag XML LogFile Analyzer는 저도 찾아보도록 하겠습니다.
http://kuaaan.tistory.com/164
참고하세요. ^^