사용자 모드 덤프 파일
이 문서에서는 사용자 모드 덤프 파일의 개요와 이를 사용하여 버그 및 크래시를 해결하는 방법을 알아보세요.
덤프 파일 분석에 대한 자세한 내용은 사용자 모드 덤프 파일 분석을 참조 하세요.
사용자 모드 덤프 파일 유형
여러 유형의 사용자 모드 크래시 덤프 파일을 사용할 수 있습니다. 다양한 유형의 덤프 파일은 다음 두 가지 범주로 나뉩니다.
덤프 파일을 분석하여 상당한 양의 정보를 얻을 수 있습니다. 그러나 덤프 파일은 디버거를 사용하여 크래시 디버깅에서 얻는 정보의 양을 제공할 수 없습니다.
전체 사용자 모드 덤프
전체 사용자 모드 덤프는 기본 사용자 모드 덤프 파일입니다. 전체 사용자 모드 덤프 파일에는 다음이 포함됩니다.
- 프로세스의 전체 메모리 공간입니다.
- 프로그램의 실행 파일 이미지입니다.
- 핸들 테이블입니다.
- 덤프가 발생했을 때 사용 중이던 메모리를 디버거가 다시 구성하는 데 도움이 되는 기타 정보입니다.
전체 사용자 모드 덤프 파일을 미니덤프로 축소할 수 있습니다. 전체 사용자 모드 덤프 파일을 축소하려면 먼저 디버거에 덤프 파일을 로드합니다. 그런 다음 .dump(덤프 파일 만들기) 명령을 사용하여 새 덤프 파일을 미니덤프 형식으로 저장합니다.
이름에도 불구하고 가장 큰 미니덤프 파일에는 전체 사용자 모드 덤프 파일보다 더 많은 정보가 포함되어 있습니다. 예를 들어 .dump /mf
명령과 .dump /ma
명령은 명령보다 .dump /f
더 크고 완전한 파일을 만듭니다.
사용자 모드 .dump /m
에서는 [MiniOptions]가 가장 적합한 경우가 많습니다. 이 스위치를 사용하여 만든 덤프 파일의 크기는 매우 작음에서 매우 큰 크기로 다를 수 있습니다. 올바른 MiniOptions 스위치를 지정하여 포함된 정보를 정확하게 제어할 수 있습니다.
미니덤프
미니덤프 파일의 크기와 내용은 덤프되는 프로그램 및 덤프를 수행하는 애플리케이션 및 선택한 옵션에 따라 달라집니다. 경우에 따라 미니덤프 파일은 적당히 크며 전체 메모리 및 핸들 테이블을 포함합니다. 다른 경우에는 미니덤프 파일이 훨씬 작습니다. 예를 들어 미니덤프 파일에는 단일 스레드에 대한 정보만 포함되거나 스택에서 참조되는 모듈에 대한 정보만 포함될 수 있습니다.
미니덤프라는 용어는 가장 큰 미니덤프 파일에 전체 사용자 모드 덤프 파일보다 더 많은 정보가 포함되어 있기 때문에 오해의 소지가 있습니다. 예를 들어 . .dump /mf
.dump /ma
.dump /f
따라서 모든 사용자 모드 덤프 파일을 만드는 대신 .dump /f
[MiniOptions]를 사용하는 .dump /m
것이 좋습니다.
디버거를 사용하여 미니덤프 파일을 만드는 경우 포함할 정보를 선택할 수 있습니다. 이 명령에는 .dump /m
대상 프로세스, 스레드 정보 및 스택 정보를 구성하는 로드된 모듈에 대한 기본 정보가 포함됩니다. 다음 표에 설명된 스위치 옵션을 사용하여 기본 명령을 수정할 수 있습니다.
.dump 선택 |
덤프 파일에 미치는 영향 |
---|---|
/ma |
모든 선택적 추가를 사용하여 미니덤프를 만듭니다. 옵션은 /ma .에 해당합니다 /mfFhut . 전체 메모리 데이터, 처리 데이터, 언로드된 모듈 정보, 기본 메모리 정보 및 스레드 시간 정보를 미니덤프에 추가합니다. |
/mf |
미니덤프에 전체 메모리 데이터를 추가합니다. 대상 애플리케이션이 소유한 액세스 가능한 커밋된 모든 페이지가 포함됩니다. |
/mF |
미니덤프에 모든 기본 메모리 정보를 추가합니다. 이 스위치는 유효한 메모리에 대한 정보뿐만 아니라 모든 기본 메모리 정보를 포함하는 스트림을 미니덤프에 추가합니다. 디버거는 이 정보를 사용하여 미니덤프를 디버그할 때 프로세스의 전체 가상 메모리 레이아웃을 다시 구성합니다. |
/mh |
대상 애플리케이션과 연결된 핸들에 대한 데이터를 미니덤프에 추가합니다. |
/mu |
언로드된 모듈 정보를 미니덤프에 추가합니다. 이 옵션은 Windows Server 2003 이상 버전의 Windows에서만 사용할 수 있습니다. |
/mt |
미니덤프에 스레드 정보를 더 추가합니다. 스레드 정보에는 미니덤프를 디버그할 때 .ttime(스레드 시간 표시)을 사용하여 표시할 수 있는 스레드 시간이 포함됩니다. |
/mi |
미니덤프에 보조 메모리를 추가합니다. 보조 메모리 는 스택 또는 백업 저장소의 포인터에 의해 참조되는 메모리와 이 주소를 둘러싼 작은 영역입니다. |
/mp |
프로세스 환경 블록 및 스레드 환경 블록 데이터를 미니덤프에 추가합니다. 이 정보는 애플리케이션의 프로세스 및 스레드와 관련된 Windows 시스템 정보에 액세스해야 하는 경우에 유용할 수 있습니다. |
/mw |
커밋된 모든 읽기-쓰기 프라이빗 페이지를 미니덤프에 추가합니다. |
/md |
실행 이미지 내의 모든 읽기-쓰기 데이터 세그먼트를 미니덤프에 추가합니다. |
/mc |
이미지 내에 코드 섹션을 추가합니다. |
/mr |
스택의 미니덤프 부분에서 삭제하고 스택 추적을 다시 만드는 데 사용되지 않는 메모리를 저장합니다. 지역 변수 및 기타 데이터 형식 값도 삭제됩니다. 이 옵션은 미니덤프를 더 작게 만들지 않지만(사용되지 않는 메모리 섹션이 0) 다른 애플리케이션의 개인 정보를 보호하려는 경우 유용합니다. |
/mR |
미니덤프에서 전체 모듈 경로를 삭제합니다. 모듈 이름 만 포함됩니다. 이 옵션은 사용자의 디렉터리 구조의 개인 정보를 보호하려는 경우에 유용합니다. |
이러한 스위치 옵션을 결합할 수 있습니다. 예를 들어 명령을 .dump /mfiu
사용하여 언로드된 메모리와 보조 메모리를 포함하는 적당히 큰 미니덤프를 만듭니다. 명령을 .dump /mrR
사용하여 사용자의 정보 중 일부를 제거하는 미니덤프를 만듭니다. 전체 구문 세부 정보는 .dump(덤프 파일 만들기)를 참조하세요.
덤프 파일을 만드는 데 사용할 도구
사용자 모드 덤프 파일을 만드는 데 사용할 수 있는 여러 가지 도구가 있습니다.
ProcDump
ProcDump는 애플리케이션에서 CPU 스파이크를 모니터링하고 급증 시 크래시 덤프를 생성하는 데 사용할 수 있는 명령줄 유틸리티입니다. 관리자 또는 개발자는 크래시 덤프 파일을 사용하여 급증의 원인을 확인할 수 있습니다. ProcDump에는 중단된 창에 대한 모니터링(Windows 및 작업 관리자에서 사용하는 창 중단과 동일한 정의 사용) 및 처리되지 않은 예외도 포함됩니다. ProcDump를 사용하여 시스템 성능 카운터의 값을 기반으로 덤프를 생성할 수 있습니다. ProcDump는 다른 스크립트에 포함할 수 있는 일반 프로세스 덤프 유틸리티로도 사용할 수 있습니다.
Sysinternals ProcDump 유틸리티를 사용하여 사용자 모드 덤프 파일을 만드는 방법에 대한 자세한 내용은 ProcDump를 참조하세요.
WinDbg 및 CDB
CDB(콘솔 디버거) 및 WinDbg(Windows 디버거)는 Windows 소프트웨어 개발 키트 및 Windows 드라이버 키트에 포함된 디버깅 도구입니다. WinDbg Windows 디버거 다운로드 및 설치의 설치 옵션을 참조하세요.
CDB 또는 WinDbg를 사용하여 여러 가지 방법으로 사용자 모드 덤프 파일을 만들 수 있습니다.
- 덤프 파일을 자동으로 만듭니다.
- 디버그할 때 덤프 파일을 만듭니다.
- 기존 덤프 파일을 축소합니다.
도구에 대한 자세한 내용은 CDB를 사용하여 Windows 디버깅 시작 및 디버그를 참조하세요.
자동으로 덤프 파일 만들기
애플리케이션 오류가 발생하면 Windows는 사후 배포 디버깅 설정에 따라 여러 가지 방법 중 하나로 응답할 수 있습니다. 이러한 설정이 디버깅 도구에 덤프 파일을 만들도록 지시하는 경우 사용자 모드 메모리 덤프 파일이 만들어집니다. 자세한 내용은 사후 관리 디버깅 사용을 참조 하세요.
디버깅할 때 덤프 파일 만들기
CDB 또는 WinDbg가 사용자 모드 애플리케이션을 디버깅하는 경우 .dump(덤프 파일 만들기) 명령을 사용하여 덤프 파일을 만들 수도 있습니다.
이 명령은 대상 애플리케이션을 종료하지 않습니다. 특정 명령 옵션을 선택하여 원하는 정보의 양을 정확하게 포함하는 미니덤프 파일을 만들 수 있습니다.
기존 덤프 파일 축소
CDB 또는 WinDbg를 사용하여 덤프 파일을 축소할 수 있습니다. 덤프 파일을 축소하려면 기존 덤프 파일 디버깅을 시작합니다. 그런 다음, 명령을 사용하여 .dump
더 작은 크기의 덤프 파일을 만듭니다.
시간 이동 디버깅
사용자 모드 애플리케이션을 디버그하는 또 다른 옵션은 TTD(Time Travel Debugging)입니다. TTD는 실행되는 동안 프로세스를 기록하는 데 사용할 수 있는 도구입니다. 디버거 세션의 기록을 재생하여 버그를 찾을 수 있습니다. 기록의 다른 부분으로 쉽게 이동하여 버그로 이어진 조건과 문제를 해결하는 방법을 이해할 수 있습니다.
TTD는 크래시 덤프 파일에 비해 상당한 이점이 있으며, 종종 실패로 이어진 코드 실행이 누락되는 경우가 많습니다. 코드 실행에서 뒤로 이동하는 기능은 근본 원인을 확인하는 데 유용할 수 있습니다.
자세한 내용은 시간 이동 디버깅 개요를 참조 하세요.
참고 항목
- 사용자 모드 덤프 파일을 분석하는 방법을 알아봅니다.
- 덤프 파일에서 정보를 추출하는 팁을 가져옵니다.