.dmp 파일을 이용한 디버깅 방법
😢상황
- 프로그램이 크래시 또는 예외 종료되면서
.dmp
(메모리 덤프) 파일이 생성됨 - 이 덤프 파일을 분석하여 당시 프로그램 상태, 호출 스택, 에러 원인을 파악하고 싶음
- 하지만
.dmp
파일을 여는 방법이나 분석하는 절차가 익숙하지 않음
🛠️해결법
방법 1: Visual Studio로 .dmp 파일 열기
- Visual Studio 실행
- 파일 → 열기 → 파일… 선택
.dmp
파일 선택- “디버깅 시작” 클릭 (또는 “Minidump Debugging”)
💡 가능하다면 .pdb
심볼 파일도 함께 준비하면 정확한 함수 이름과 코드 라인을 볼 수 있음
방법 2: WinDbg로 분석 (고급)
- WinDbg 설치 (Windows SDK 포함)
- WinDbg 실행 후
.dmp
파일 열기 - 기본 명령어 입력
!analyze -v
🔍 자세한 크래시 원인, 예외 정보, 호출 스택 출력
💡 추가 명령어:
k
: 호출 스택 보기lm
: 로드된 모듈 목록 보기!threads
: 스레드 상태 보기
심볼 서버 설정 (강력 추천)
정확한 디버깅을 위해 Microsoft 심볼 서버를 등록:
Visual Studio 또는 WinDbg에 다음 경로 추가:
https://msdl.microsoft.com/download/symbols
🔸
.pdb
파일이 없을 경우에도, 일부 심볼을 자동으로 받아서 분석 가능
✅정리: 왜 이게 효과 있었는가?
.dmp
파일은 프로그램 크래시 당시의 메모리 스냅샷을 저장한 것- 이를 통해 소스 코드 없이도 문제 발생 위치, 예외 원인, 상태를 분석 가능
- Visual Studio는 간편하게
.dmp
를 열 수 있으며, WinDbg는 더 세밀한 분석이 가능