반응형

http://msdn.microsoft.com/ko-kr/windows/hardware/gg487459




OCA 미니덤프 파일 디버깅

이 페이지에서

온라인 크래시 분석  온라인 크래시 분석
덤프 파일 분석  덤프 파일 분석
심볼을 이용한 실행 코드와 소스 코드 매칭  심볼을 이용한 실행 코드와 소스 코드 매칭
응용 프로그램에 WER 통합  응용 프로그램에 WER 통합


온라인 크래시 분석

온라인 크래시 분석(OCA)은 WER 정보용 보고 장치입니다. 기업에서는 OCA 크래시 덤프를 이용해 고객의 문제를 분석할 수 있습니다.

덤프 파일 분석

덤프 파일은 크래시 발생 시 컴퓨터 또는 프로세스의 상태를 한 눈에 보여줍니다.

개발자가 이 데이터를 분석하려면 사용자 미니덤프 파일을 읽을 수 있는 디버거를 사용해야 합니다. 디버거는 덤프 파일의 콘텐츠와 매칭되는 이미지 및 심볼에도 액세스할 수 있어야 합니다. 대부분의 개발자들은 현재 발생한 크래시를 디버깅할 때 매칭되는 심볼을 사용해야 하는 점은 잘 알고 있습니다. 그러나 미니덤프를 디버깅할 때 디버거에 매칭되는 이미지가 필요하다는 것 역시 간과해서는 안 됩니다.

매칭되는 이미지가 필요한 이유는, 미니덤프 파일이 소량의 정보를 저장하기 때문입니다. 즉, 미니덤프 파일은 크래시 발생 시 휘발성 정보의 일부만을 저장할 뿐, 컴퓨터가 메모리에 로드한 기본 코드 스트림은 저장하지 않습니다. 대신 미니덤프 파일은 공간을 절약하기 위해 크래시가 발생한 컴퓨터에 로드된 이미지의 이름과 타임 스탬프만을 저장합니다.

크래시가 발생한 컴퓨터에서 실행되고 있는 코드를 조사하기 위해, 디버거는 이 컴퓨터가 실행 중인 해당 바이너리에 액세스해야 합니다. 개발자가 크래시를 디버깅하려고 할 때 디버거는 미니덤프 파일에 저장된 이름 및 타임 스탬프를 사용해 바이너리를 고유하게 매칭 및 로드합니다.

이미지 및 심볼이 디버거에 로드되면, 크래시 발생 후 저장된 데이터는 물론 크래시 발생 시의 시스템 상태를 분석할 수 있습니다. 그러나 미니덤프는 해당 문제의 원인이 된 단계를 재현하지 않습니다. 원인을 찾으려면 드라이버의 소스 코드를 분석해 문제의 원인이 된 코드 경로를 찾아야 합니다. 일반적으로 덤프 파일 및 소스 코드를 분석하면 상당수의 문제를 파악하고 해결할 수 있는 것으로 나타나고 있습니다.

심볼을 이용한 실행 코드와 소스 코드 매칭

매칭되는 이미지 및 심볼에 액세스하는 가장 좋은 방법은 Microsoft 심볼 서버를 이용하는 것입니다. 심볼은 디버거가 실행 코드를 소스 코드에 매핑할 수 있도록 해 주는 데이터입니다. 프로그램 구축 시 프로그램의 심볼은 일반적으로 심볼 파일에 저장됩니다. 디버거가 프로그램을 분석하려면 프로그램의 심볼에 액세스해야 합니다.

심볼 파일에는 다음과 같은 정보가 수록됩니다.

  • 모든 기능의 이름 및 주소

  • 모든 데이터 유형, 구조 및 클래스 정의

  • 전역 변수의 이름, 데이터 유형 및 주소

  • 로컬 변수의 이름, 데이터 유형, 주소 및 범위

  • 각 바이너리 지침에 해당하는 소스 코드의 라인 번호

Microsoft Windows 드라이버 개발 키트(DDK)에는 심볼 파일에서 심볼의 수를 줄일 수 있는 도구가 포함되어 있습니다. 소스 수준의 모든 정보를 포함하고 있는 심볼 파일을 풀 심볼 파일이라고 하며, 정보의 양이 줄어든 심볼 파일을 스트립트 심볼 파일이라고 합니다.

심볼 데이터는 Windows 오류 보고(WER) 데이터에서 유용한 크래시 정보를 확보하는 데 매우 중요하기 때문에, 서명할 드라이버를 제출할 때 심볼을 제출하는 것이 좋습니다. 제출된 심볼은 관련 WER 프로세스와 심볼 데이터를 동기화하는 서버에 저장됩니다. 이러한 저장 프로세스를 통해 미니덤프 파일에 보고된 크래시를 쉽게 분류할 수 있으며 결과적으로 Microsoft로부터 더 나은 수준의 데이터를 받을 수 있습니다.

Microsoft는 미니덤프 파일의 Windows 모듈을 분석하는 데 사용할 수 있도록 인터넷을 통해 심볼 서버를 제공합니다. 이 서버에는 Windows 및 기타 몇 가지 제품용 스트립트 심볼 파일이 포함되어 있으며, Windows XP 및 Windows Server 2003용 바이너리도 추가되었습니다. 인터넷의 심볼 서버와 Windows용 디버깅 도구를 이용해 미니덤프 파일을 분석할 수 있습니다.

응용 프로그램에 WER 통합

Windows 오류 보고를 응용 프로그램에 통합할 수도 있습니다. 이 프로세스에는 응용 프로그램 핸들러를 작성하고 ReportFault 기능을 구현하는 작업이 수반되며 보통 하루가 채 걸리지 않습니다.

Windows XP 및 후속 버전의 운영 체제용 응용 프로그램을 작성할 때, Microsoft Windows XP에 새로 추가된 기능을 이용할 수 있습니다. 이 기능은 응용 프로그램의 복구 작동을 보류시키면서 Microsoft에 전송 가능한 표준 오류 보고서를 생성하는 것으로서, ReportFault 라고 합니다. 이 기능을 응용 프로그램 예외 핸들러에서 호출하여 오류 보고서를 생성할 수 있습니다.


ReportFault 기능 참조 자료

페이지 맨 위로 페이지 맨 위로

반응형

+ Recent posts