윈도우 디버깅을 하는 방법은 크게 두 가지로 라이브 디버깅크래시 덤프 디버깅이 있습니다.

- 라이브 디버깅 : 코드를 실행시키면서 디버깅을 동시에 진행하는 방법

- 크래시 덤프 디버깅 : 윈도우가 스스로 BSOD(Blue Screen of Death)가 발생한 시점에 덤프 파일을 생성(커널모드)하거나 유저모드 오류가 발생했을 때 생성한 덤프 파일을 디버깅 하는 방법


이 포스트에서는 크래시 덤프 디버깅을 위한 크래시 덤프를 수집하는 방법을 설명하도록 하겠습니다.



유저모드 덤프 수집 방법

프로세스 익스플로러를 이용해 덤프를 수집하는 방법입니다.


- 프로세스 우클릭 -> Create Dump -> Create Mini or Full Dump를 클릭

- 프로세스 익스플로러가 존재하는 폴더에 덤프 파일이 생성됩니다. (프로세스 명.dmp)



작업 관리자를 이용한 덤프 수집 방법

- 작업 관리자 실행


- 덤프하고자 하는 프로세스 우클릭 -> 덤프파일 만들기 클릭


- 해당 위치로 이동하면 덤프 파일을 수집할 수 있습니다.

- 프로세스에 Hang이나 Crash가 발생했을 때 작업관리자를 실행하고 덤프를 수집하면 해당 상황에 대한 기록들을 확인할 수 있습니다.



커널모드 덤프 수집 방법

커널모드에서 문제가 발생해 BSOD가 발생하면 크래시 덤프 파일이 자동으로 생성됩니다.

커널모드 덤프의 종류로는 미니덤프커널덤프 그리고 전체덤프가 있습니다.

- 미니덤프 : 말 그대로 Crash 상태에서 최소한의 정보만 가지고 있는 덤프로 레지스터, 콜스택, 프로세스 정보, 스레드 정보, 오류가 발생한 시점에 접근했던 메모리의 일부만을 저장합니다. 따라서 Crash 원인을 분석할 정보가 모자랄 수도 있습니다.

- 커널덤프 : 커널 메모리에 해당하는 영역만 저장합니다. 따라서 운영체제(커널)나 드라이버는 확인이 가능하지만 유저모드 프로세스는 확인할 수 없습니다. (드라이버 Crash일 경우 주로 덤프합니다.)

- 전체덤프 : Crash 시점의 유저/커널모드 메모리에 대한 모든 정보를 가지고 있습니다. 


덤프 종류는 시스템 속성 -> 고급 탭 시작 및 복구의 설정 -> 시스템 오류의 디버깅 정보 쓰기 탭을 이용합니다.


미니덤프의 위치

- 041915는 15년 4월 19일에 생성되었음을 의미합니다.


전체덤프의 위치

- 항상 이름은 MEMORY,dmp로 저장됩니다.

- 따라서, 다음 Crash가 발생하게 되면 덮어씌워지게 됩니다. (항상 마지막에 발생한 덤프만 저장) 때문에 필요한 덤프는 다른 위치에 복사해서 보관해야 합니다.


다음에는 이 덤프파일을 분석해 Crash의 원인을 찾아보도록 하겠습니다.

'Windows > Windows Debugging' 카테고리의 다른 글

Display Memory - da, db, dc, dd, dD, df, dp, dq, du, dw  (0) 2016.02.20
강제 BSOD로 전체덤프 저장하기  (0) 2016.01.31
!analyze -v  (0) 2015.07.04
Posted by 긍정왕오킹