일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 터키여행
- LiveKD
- 인문고전
- FTP7.5
- Session space
- iSCSI target
- windows update
- Nested VM
- windows debugging tool
- MSCS on VMWare
- Windows Server 2016 Hyper-v Cluster
- 프로세스 CPU 사용량
- SQL Server 2008
- Windows Server 2016
- 클러스터
- Local TempDB
- Xperf
- 안철수
- Windows Server 2008
- 작업관리자
- Hyper-V
- cluster node as Domain controller
- ftp7.5 장애조치 클러스터
- failover cluster
- nonpaged pool
- SQL Server 2012R2 FCI
- dsquery
- windbg
- paged pool
- windows media service
- Today
- Total
류짱:Beyond MySelf
How to create memory dump on crashes 본문
How to create memory dump on crashes?
[ What's mean BSoD?]
A Blue Screen of Death (also known as a stop error, BSoD or bluescreen) is an error screen displayed by certain operating systems, most notably Microsoft Windows, after encountering a critical system error which can cause the system to shut down to prevent damage. Bluescreens can be caused by poorly written device drivers, faulty memory, a corrupt registry, or an incompatible Dynamic-link library (DLL).
[Crash 발생시 동작 함수]
시스템(CPU or OS)이 어떠한 문제(오류)를 인지하였을 경우 또는 커널을 보호해야 하는 경우는 Windows 운영체제 내의 KeBugCheckEx() 함수가 호출됩니다. KeBugCheckEx()함수는 5가지의 Arguments를 포함합니다.
Stop code (또는 bugcheck code)
Four stop-code defined parameters
KeBugCheckEx() 함수의 동작은 아래와 같습니다.
Turns off interrupts
Tells other CPUs to stop
Paints the blue screen (BSOD)
Notifies registered drivers of the crash
If a dump is configured (and it is safe to do so), writes dump to disk
위 내용을 정리하면, 아래 Crash 덤프 생성 순서를 확인할 수 있습니다.
[Crash 덤프 생성 순서]
① CPU(또는 OS)에 의한 시스템 오류 감지
② KeBugCheckEx() 함수 실행
③ 시스템의 메모리 내용을 Pagefile.sys 로 저장 (BSoD)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl 내용에 의해 덤프 종류 결정
④ 시스템 재부팅 (Automatically restart 옵션에 의해 결정)
⑤ 운영체제 시작 시 savedump.exe 프로세스 구동 (발생 시간 및 간단한 정보(BugCheck 등)을 Event 등록 )
⑥ Memory.dmp 파일 생성 후 pagefile.sys 에 저장된 내용을 해당 파일로 이동
(기본적으로 %Systemroot% 폴더에 위치함)
⑦ Logon 시 설정에 따라 Dumprep.exe 추가 수행
[Crashes Dump 발생 조건]
System 내 여러 동작 중 Designed 된 또는 정형화된 동작을 위반하는 경우, Windows는 Design 상 반드시 Memory Dump를 발생시키게 됩니다. 즉, KEBugcheckEX()함수에 정의된 값으로 내용을 저장하게 됩니다.
하지만 몇몇 Crashed Dump 생성 조건에 부합되지 않는 경우는 Dump 가 발생치 않고, Dirty Shutdown 이 발생할 수 있습니다(Software 적인 처리가 안 되는 경우, 즉 H/W 오동작으로 인해 발생되는 시스템 재부팅은 Dirty Shutdown 으로 분리하지는 않습니다). 아래 내용을 참조합니다.
① Memory.dmp 파일이 이미 존재하고, 제어판의 시스템에서 기존 파일에 덮어쓰기 옵션이 반드시 선택되어 있어야 함(KB의 문서인데 이전에 Dump 파일이 존재 하지 않아 됨....)
② 지정된 파티션에 Memory.dmp 파일을 포함하기에 충분한 디스크 여유 공간이 필요
③ C:\ 드라이브, 즉 Active Partition(시스템 파티션=Boot Volume)에 필히 pagefile.sys가 존재해야 함
④ 특정 하드웨어(시스템 BIOS 등)에서 직접 오류 처리 기능이 있다면, Disable 해야 함 (예, HP ARS)
⑤ SCSI 컨트롤러와 같이 디스크 IO 관련 문제로 Crash가 발생한 경우 Memory.dmp 생성되지 않을 수 있음
⑥ 전체 메모리 덤프 생성시 \%SYSTEMROOT% 파티션에 있는 유효한 페이지 파일(pagefile.sys)의 크기가 실제 물리적 메모리(RAM) 크기에 약 12 MB를 더한 크기 이상으로 존재해야 함
A. 8GB의 시스템일 경우 pagefile.sys의 설정 – 8204MB 이상 ((1024 x 8) + 12)
B. 4GB 이상의 메모리를 가진 시스템은 반드시 Boot.ini 에 PAE 옵션을 추가해야 함
C. Kernel Dump 수집 시 또한 가능한 2GB 이상의 Pagefile.sys 를 유지 권고