티스토리 뷰

LiveKD.exe를 이용하여 운영중인 시스템에서 Full Memory Dump 수집하는 방법

참고
아래 방법은 현재 운영중인 시스템에 Crash 등 어떠한 영향도 주지 않습니다. 단지 File I/O 가 많이 발생하여, Dump를 수집하는 동안 성능에 약간의 문제가 있을 수 있습니다. 참조하십시오.

준비사항
1. 아래 링크에서 Debugging 툴인 windbg (Debugging Tools for Windows)를 다운로드하여 설치를 합니다.
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

C:\Program Files\Debugging Tools for Windows (x86) 폴더가 생성 됩니다.


참고
위 링크는 32Bit 용 windbg를 다운로드할 수 있습니다. 만약 문제의 시스템이 64Bit 시스템이라면, 아래 링크를 이용하십시오.

http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx

2. 아래 링크에서 LiveKD.exe를 다운로드하신 후 C:\Program Files\Debugging Tools for Windows (x86)폴더에 복사해 넣습니다.
http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx

3. 명령 프롬프트(cmd.exe)를 수행합니다. C:\ 루트로 이동합니다.

4. LivdKD 를 통해 특정 시스템의 Memory dump를 수집하기 위해서는 Public symbol을 캐쉬로 가져야 합니다. 따라서 아래와 같이 특정 폴더를 생성해 줍니다.
MD C:\Symbols

5. 아래 명령을 통해 위에서 생성한 폴더에 Symbol 이 캐쉬될 수 있도록 설정합니다.
CD C:\Program Files\Debugging Tools for Windows (x86)
Livekd -y SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
참고 : 위 명령을 처음 수행할 때, 웹에서 해당 시스템의 Symbol 테이블을 확인하고, 다운로드하기 때문에 조금 반응이 늦어질 수 있습니다.
수행 화면은 아래와 같습니다.
C:\Program Files\Debugging Tools for Windows (x86)
livekd -y SRV*c:\symbols*http://msdl.microsoft.com/download/symbols


 

  C:\Program Files\Debugging Tools for Windows (x86)>livekd.exe -y srv*c:\symbols*
http://msdl.microsoft.com/download/symbols\
LiveKd v5.0 - Execute kd/windbg on a live system
Sysinternals - www.sysinternals.com
Copyright (C) 2000-2010 Mark Russinovich and Ken Johnson
Launching C:\Program Files\Debugging Tools for Windows (x86)\kd.exe:
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\WINDOWS\livekd.dmp]
Kernel Complete Dump File: Full address space is available
Comment: 'LiveKD live system view'
Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
\
Executable search path is:
Windows Server 2003 Kernel Version 3790 (Service Pack 2) UP Free x86 compatible
Product: LanManNt, suite: Enterprise TerminalServer
Built by: 3790.srv03_sp2_gdr.100216-1301
Machine Name:
Kernel base = 0x80800000 PsLoadedModuleList = 0x808a8e48
Debug session time: Sun Feb 13 11:34:57.897 17420 (UTC + 9:00)
System Uptime: 5 days 17:52:55.604
WARNING: Process directory table base 0280C000 doesn't match CR3 0F8F4000
WARNING: Process directory table base 0280C000 doesn't match CR3 0F8F4000
Loading Kernel Symbols
...............................................................
...............................................
Loading User Symbols
...........
Loading unloaded module list
...............
kd>


[전체 메모리 덤프 수집 방법]

1. LiveKD를 수행합니다. 만약 LiveKD가 수행 중일 때, "Execute KD again? (y/n)" 메시지에서 Y 를 선택하셔도 됩니다. 새로 LivdKD를 수행하려면 아래와 같이 수행합니다.

CD C:\Program Files\Debugging Tools for Windows (x86)
Livekd -y SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols

참고
LivdKD.exe 파일이 C:\Debuggers 폴더에 있기 때문에 위와 같이 명령 프롬프트 창에서 C:\Debuggers 폴더 아래에서 명령을 수행해야 합니다.

2. 시스템에 Crash 나 서비스 프로그램 등에 영향을 주지 않고 Full Memory Dump를 수집하기 위해 LiveKD세션에서 아래와 같이 명령을 수행합니다.
.dump /f /o X:\fulldump.dmp

참고
위 명령에서의 X: 드라이브는 현재 시스템의 Physical 메모리보다 큰 가용공간을 가져야 합니다.
즉, 실제 메모리가 8GB 라면, X: 드라이브의 여유 공간이 최소 8GB 이상이어야 합니다. 물론 fulldump.dmp 파일명과 X: 드라이브는 다른 것으로 변경이 가능합니다.

3. Dump 저장 프로세스가 모두 끝나면, Q 명령을 수행하여 LiveKD를 종료합니다.

감사합니다.

댓글
댓글쓰기 폼