[실전 윈도우 디버깅] 13 포스트모템 디버깅
TRANSCRIPT
ohyecloudy http://ohyecloudy.com
아꿈사 http://cafe.naver.com/architect1.cafe
2009.10.17
고객의 정책, 환경 문제로 실시간 접근이 불가능 할 때
실패 시점에 시스템 상태 스냅샷을 만들어서 분석한다.
덤프 파일
덤프 파일 기본 덤프 파일 생성
덤프 파일 사용
윈도우 오류 보고
덤프 파일 종류
풀full 덤프
프로세서 실행 이미지
핸들 테이블
디버거가 사용하는 기타정보
데이터 양을 조절할 수 없다.
미니mini 덤프
커스터마이즈가 가능하다.
덤프 파일 생성 툴
- 윈도우 디버거
- ADPlus
- WER Window Error Report
- CER Corporate Error Reporting
덤프 파일 기본 덤프 파일 종류, 생성 툴
덤프 파일 생성 덤프 파일 사용
윈도우 오류 보고
void __cdecl wmain()
{
WCHAR* pszTitle=L”Advanced Windows Debugging”;
wprintf(L”Press any key to start\n”);
WCHAR* pBuffer=(WCHAR*)new WCHAR[wcslen(pszTitle)+1];
if (pBuffer)
{
StringCchCopy(
pBuffer, wcslen(pszTitle)+1, pszTitle);
wprintf(L”Title: %s\n”, pBuffer);
pBuffer = NULL;
*pBuffer = ‘\0’;
}
else
{
wprintf(L”Failed to allocate memory\n”);
}
wprintf(L”Press any key to end\n”);
__getch();
}
덤프 파일 생성, 로드
데모
덤프 파일 생성 스크릮캐스트 : http://screencast.com/t/nkXLVNjv 생성한 덤프 로드 스크릮캐스트 : http://screencast.com/t/QRL0uDMgY
포스트모템 디버거
프로세스가 크래시될 때마다
윈도우가 디버거를 사용해
덤프 파일을 생성하게 하는 메커니즘
포스트모템 디버거 설정
HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows NT\ CurrentVersion\AeDebug windbg.exe –p %ld –e %ld –g
-p %ld : 연결할 프로세스 -e %ld : 연결이 완료될 때 시그널되는 이벤트 -g : 연결할 때 발생하는 최초 디폴트 중단점을 무시
VS JIT 디버거
ADPlus
adplus.vbs -crash -pn awdscenario1.exe -y SRV*c:\Symbols*http://msdl.microsoft.com/download/symbols
ADPlus(계속)
자동으로 덤프 파일 생성.
FullOnFirst
MiniOnSecond
NoDumpOnFirst
NoDumpOnSecond
커널덤프
제어판 > 시스템 > 고급 > 시작 및 복구
커널 덤프 종류
젂체 메모리 덤프 - 모든 물리 메모리 포함
- 젂체 RAM보다 1MB 큰 파일을 저장할 공간 필요
커널 메모리 덤프 - 시스템 물리 메모리 1/3
- 윈도우 커널, HAL, 커널 모드 드라이버…
작은 메모리 덤프minidump
- 64KB, 덤프 파일 공간이 제한되어 있을 때 유용.
- 프로세서 컨텍스트, 커널 컨텍스트, 호출 스택…
수동으로 크래시 덤프 파일 생성
HKEY_LOCAL_MACHINE\ system\ CurrentControlSet\ Services\ i8042prt\Parameters <CrashOnCtrlScroll, REG_DWORD 0x1>
오른쪽 CTRL + SCROLL LOCK을 두번 누르면 크래시
PS2 키보드
덤프 파일 기본 덤프 파일 종류, 생성 툴
덤프 파일 생성 덤프 생성 데모, 포스트모템 디버거, ADPlus, 커널 덤프
덤프 파일 사용 윈도우 오류 보고
덤프 파일 분석 :
접근 위반, 핸들 누수
데모 접근 위반 분석 스크릮캐스트 : http://screencast.com/t/3j1AEyix5J0 핸들 누수 덤프 생성 스크릮캐스트 : http://screencast.com/t/EfQReO9n 핸들 누수 덤프 분석 스크릮캐스트 : http://screencast.com/t/5mYX8tscYG
덤프 파일 기본 덤프 파일 종류, 생성 툴
덤프 파일 생성 덤프 생성 데모, 포스트모템 디버거, ADPlus, 커널 덤프
덤프 파일 사용 접근 위반, 핸들 누수 덤프 파일 분석 데모
윈도우 오류 보고
Dr.Watson
WER Window Error Report 서비스에 보낼 수 있는 오류 보고 정보를 생성
- 예외 섹션
- 시스템 정보
- 작업 목록
- 모듈 목록
- 쓰레드 상태 덤프
- 스택 역추적
- 로raw 스택 덤프
윈도우 오류 보고 아키텍처
프로세스 X가 크래시 Dr.Watson UI 표시 “보내기”를 클릭
크래시 데이터를 관리 (질의, 피드백 루프 제공…) ISV
사용자
WER
크래시
데이터
폴트
대응
크래시 데이터가 있는지 주기적으로 질의
피드백 루프로 사용할 수 있는 수정을 제공
윈도우 오류 보고
크래시 덤프 및 오류 보고를 대신 수집,
관리해준다.
등록 젃차 - 사용자 계정, 회사 계정 생성
- 무료
책 664 참고
기업 오류 보고
오류 보고를 지역적으로 보관할 수 있다.
- MS로 덤프, 오류 보고를 선택해서 보낼 수 있다.
- 보안에 민감한 부분
책 683 참고
덤프 파일 기본 덤프 파일 종류, 생성 툴
덤프 파일 생성 덤프 생성 데모, 포스트모템 디버거, ADPlus, 커널 덤프
덤프 파일 사용 접근 위반, 핸들 누수 덤프 파일 분석 데모
윈도우 오류 보고 Dr.Watson, WER, CER