2010년 3월 9일 화요일

Windbg help. 번역 <Crash Dump Files>

Crash Dump Files


크래쉬 덤프 파일은 특정한 메모리 영역과 어플리케이션이나 운영체제와 관련된 데이터의 snapshot을 가지고 있는 파일이다. 크래쉬 덤프 파일은 저장할 수 있기 때문에 문제가 발생한 시점 이후에 언제든지 어플리케이션이나 운영체제를 디버깅하는데 사용할 수 있다.

 user-mode 크래쉬 덤프 파일은 어플리케이션에 오류가 발생하면 윈도우에 의해서 생성되고, kernel-mode 크래쉬 덤프 파일은 윈도우 자체에 오류가 발생했을 때 윈도우의 특별한 routine에 의해서 생성된다. 이에 대한 자세한 설명이 이어질 것이다.

 

1.     User-Mode Dump files

A.     User-mode dump file의 종류

User-mode dump 파일은 몇 가지 종류가 있고, 다음 두 가지 분류로 나눌 수 있다.

Full User-Mode Dumps

Minidumps

이 두 가지 덤프 파일의 차이점은 덤프 파일의 크기이다. Minidump는 보통 더욱 간결해서 덤프 분석을 위해서 쉽게 전달할 수 있다.

 

>주의. 많은 정보가 dump 파일을 분석하면서 얻어질 수 있지만, 실제로 디버거를 사용해서 직접 crash를 디버깅하는 것만큼 많은 정보를 제공해주는 덤프 파일은 없다.

 

                         i.         Full User-Mode Dumps

full user-mode dump는 기본적인 user-mode 덤프 파일이다.

이 파일은 프로세스의 전체 메모리 공간, 프로그램의 실행 파일 이미지, 핸들 테이블, 그 밖에 디버깅에 유용한 여러 정보를 포함한다.

full user-mode dump 파일은 minidump로 축소시킬 수 있다. 단순히 디버거에 덤프 파일을 로드하고 '.dump' 커맨드를 사용하여 새로운 minidump 형식의 덤프 파일을 저장한다.

note. minidump라는 이름에도 불구하고, 가장 큰 minidump는 실제로 full user-mode dump보다 더 많은 정보를 가진다. 예를 들면, .dump /mf 혹은 .dump /ma .dump /f보다 더 크고 많은 정보를 가진 덤프 파일을 생성한다.

user mode에서는 .dump /m[MiniOptions]이 가장 좋은 선택이다. 이 옵션 스위치를 사용하여 생성된 덤프 파일은 크기가 다양할 수 있다. 적절한 MiniOptions을 사용하여 포함될 정보를 명확하게 조절할 수 있다.

 

                        ii.         Minidumps

어떤 프로세스와 관련된 메모리에서 선택된 부분적인 정보를 가지고 있는 user-mode dump 파일을 minidump라고 부른다. minidump 파일의 크기와 내용은 덤프의 대상이 되는 프로그램과 덤프를 만드는 어플리케이션에 따라서 다양하다. minidump 파일은 아주 크고 전체 메모리와 핸들 테이블을 포함하는 경우도 있고, 어쩔 때는 이보다 확연히 작을수도 있다. 예를 들면, minidump 파일은 싱글 스레드에 대한 정보 혹은 실제로 참조되고 있는 모듈의 스택에 존재하는 정보만을 가지고 있을 수도 있다. 가장 큰 minidump 파일은 실제로 full user-dump보다 더 많은 정보를 가지고 있기 때문에 'minidump'라는 이름은 오해를 가져올 소지가 있다. 예를 들면, .dump /mf 혹은 .dump /ma .dump /f보다 더 많은 정보를 가지고 있는 덤프 파일을 만들어 낼 것이다. 이러한 이유 때문에, user-mode 덤프 파일을 생성할 때는 .dump /f보다는 .dump /m[MiniOption]를 사용하길 권장한다.

만약 디버거를 사용해서 minidump 파일을 생성하려고 한다면, 좀 더 정밀하게 포함되는 정보를 선택할 수 있다. 단순히 .dump /m 커맨드를 사용한다면 target process를 구성하는 로드된 모듈, thread 정보, 그리고 스택 정보에 대한 기본적인 정보만을 포함한 덤프를 만들어 낸다. 이것은 다음 옵션들에 의해서 변경될 수 있다.

 

 옵션

 덤프에 미치는 영향

/ma

minidump의 모든 추가적인 옵션을 사용하는 것과 같은 효과를 낸다. /ma 옵션은 /mfFhut와 같다. 이것은 full memory data, 핸들 데이터, 로딩되지 않은 모듈 정보, 기본적인 메모리 정보, 그리고 thread time 정보를 덤프 파일에 포함시킨다.

/mf

minidump 파일에 full memory data를 추가한다. target 어플리케이션이 소유하는 모든 접근 가능한 commit된 페

이지를 포함한다.

/mF

minidump 파일에 메모리에 대한 모든 기본적인 정보를 추가한다. 이것은 유효한 메모리에 대한 정보만이 아니라 모든 메모리에 대한 기본적인 정보를 포함시킨다. 이것은 minidump를 가지고 디버깅을 할 때, 디버거가 프로세스에 대한 완전한 virtual memory layout을 재구성할 수 있도록 해준다.

/mh

minidump target process와 관련된 핸들에 대한 정보를 추가한다

/mu

minidump에 로딩되지 않은 모듈에 대한 정보를 추가한다. 이것은 오직 Windows Server 2003과 그 이후 버전의 윈도우에서만 사용할 수 있다.

/mt

minidump에 추가적인 thread 정보를 추가한다. 여기에는 minidump를 디버깅할 때 .ttime 커맨드에 의해서 표시되는 thread time이 포함된다.

/mi

Secondary memory minidump 파일에 추가한다. secondary memory라는 것은 스택이나 backing store에 있는 포인터에 의해서 참조되는 메모리와 그 포인터가 가르키는 주소 근처의 약간의 지역을 뜻한다. (역자주: backing store paging이나 swapping 시스템에 의해서 main memory에서 밀려 난 데이터들을 저장하는, 일반적으로 하드디스크의 특정 부분을 의미한다.)

/mp

Process Environment Block(PEB) Thread Environment Block(TEB) 데이터를 minidump에 추가한다. 이것은 어플리케이션의 프로세스나 thread에 관련된 Windows 시스템 정보에 접근할 필요가 있을 때 유용하다.

/mw

모든 commit read-write private page minidump에 추가한다.

/md

executable 이미지에 있는 모든 read-write 데이터 세그먼트를 minidump에 추가한다.

/mc

이미지에 있는 코드 섹션을 추가한다.

/mr

minidump에서 스택 추적(stack trace)을 재생성하는데 불필요한 스택이나 store memory의 일부분을 제거한다. 또한 로컬 변수나 다른 데이터 타입의 값들도 삭제된다. 이 옵션은 minidump를 더 작게 만들지는 않는다.(이러한 메모리 섹션은 단지 0으로 채워진다.) 이 옵션은 다른 어플리케이션의 privacy를 보호하기 원할 때 유용하다.

/mR

minidump에서 full module path를 삭제한다. 오직 모듈 이름만 포함된다. 이 옵션은 사용자의 디렉토리 구조에 관련된 privacy를 보호하기를 원할 때 유용하다.

/mk "FileName"

Windows Vista only) user-mode minidump에 더하여 kernel-mode minidump도 생성한다. kernel-mode minidump user-mode minidump에 저장되어 있는 thread에 대한 dump로 제한된다. FileName은 따옴표로 둘러 싸여야 한다.

 

이 옵션들은 혼합되어 사용될 수 있다. 예를 들면, .dump /mfiu 커맨드는 확실히 용량이 큰 minidump를 만든느 데 사용할 수 있고, .dump /mrR은 사용자의 privacy를 보호할 수 있는 minidump를 만드는데 사용할 수 있다. 더욱 완전하고 자세한 문법을 위해서는 .dump 커맨드에 대한 섹션을 참조하시오.(이후에 번역하겠음).

minidump 파일의 자세한 내부 구조는 Microsoft Windows SDK에 있는 DbgHelp reference에 있다.

댓글 없음:

댓글 쓰기