반응형

http://nicecapj.blog.me/130022161118


위 블로그에서는 덤프파일로 사용자컴(프로그램을 돌리는 실제 하는 사용자)에서 버그가 발생할경우에 대한 덤프 파일을 만들고

그 덤프파일을 바탕으로 vs 에서 디버깅 할 수 있는 환경을 재생시켜주는 환경을 브레이크 걸어 보여준다






[디버그]미니덤프를 사용한 Crash잡기(의역)  디버깅 

2007/09/08 16:16

복사http://nicecapj.blog.me/130022161118



CrashDump 라는 프로젝트를 생성하고, 위와 같이 간단한 소스를 코딩磯?lt;/P>

p는 포인터 변수로(const char* p) 현재 NULL값을 가지고 있다.

그 후, NULL을 가르키고 있는 포인터 변수의 값을 출력하게 함으로써, 문제를 일으키는 소스이다 

 

 

예상했던 되로, 컴파일 해서 실행을 하면 문제를 일으키게 된다 . 이때 우리는 디버그 모드임으로 콜스택의 상태와 문제가 생긴 부분을 볼수 있다. pdb 파일에 디버깅 정보가 기록되 있기 때문이다.

 

 

죽은 부분은 NULL포인터의 주소(0X00000000)을 가르키고 있다. 우리는 콜스택의 상태나, 문제 부분의 값을 볼수 있지만 사용자에게 사용할 때는 그렇지 않다.

 

 

이제부터 윈도우의 닥터 왓슨32를 이용해서 문제를 잡아보도록 하자

닥터 왓슨 32를 실행하자

 

 

여러가지 옵션값이 있는데 우리는 모두 체크하도록 하자. 내용을 모두 한글로 적을까 하였으나, 보통 한글 윈도우를 사용할 것이라 생각하고, 영어 내용도 어려운 내용은 없음으로 생략한다. 중요한 것은 로그파일 패스와, 생길 덤프 파일의 이름 설정정도이다.

 

 

자 이제 실제로 프로그램의 문제가 생겼을때, 닥터왓슨이 이를 처리하도록 해주는 작업을 해야한다

regedit로 레지스트리 에디터를 연후 HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows NT -> CurrentVersion-> AeDebug 를 열어서 drwtsn32.exe -p %ld -e %ld -g로 설정하도록 하자. 보통 비쥬얼 스튜디오가 설치된 분들은 비쥬얼 스튜디오가 문제 발생시 처리하게 되 있을 것이다. 프로그램이 이상을 일으켰을때 DEBUG 하시겠습까? 라는 부분이 이에 해당한다

 

 

설정은 저장한 후, 다시 CrashDump.exe를 실행해보자. 그러면 닥터왓슨이 로그를 기록했다는 메시지를 볼 수 잇다.

 

로그 파일의 내용은 문제가 발생한 어플리케이션, 스택, 발생당시 메모리상의 프로세스들 등의 정보를 담고 있다.

 

 

 

 

그럼 문제 발생시 닥터 왓슨이 생성해준 덤프를 우리가 만든 CrashDump 프로젝트에 debug 폴더로 복사하도록 하자. 이 분도 Total Commander을 사용하고 있는 모습이 인상적이었다. 어쨋든 복사하도록 하자

 

 

복사한 후에 비쥬얼 스튜디오에서 File->OpenProject를 선택하여 dump파일을 열도록 한다

 

 

dump파일을 열면 새로운 프로젝트가 생기는데, 여기서 Debug->Start New Instance를 선택한다

 

 

프로젝트가 실행이 되고, 소스코드와 매칭되어, 문제가 발생하는 부분에서 디버깅을 시작할 수 있다.

 

------------------------------------------------------------------------------------------

출처 : MSDN - VIsual c++ home의 David Ching이 기고하신 글

:Track('ctl00_ctl01|ctl00_ctl03',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/winvideo-nativecoding-crashdump.wmv" >How Do I: Create and Analyze a Mini-Dump File in Windows?
 
:Track('ctl00_ctl01|ctl00_ctl04',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/winvideo-nativecoding-crashdump.wmv">Mini-dumps contain pertinent data during a crash. When analyzed in Visual Studio, they show the call stack and symbols, just as if the crash had occurred on the developer's machine while debugging within Visual Studio. Mini-dumps are captured in Windows XP and Windows Vista without requiring Visual Studio or any other tool to be installed or running.

Presented by David Ching on September 4, 2007
Length: 18 minutes 22 seconds
 
Video Downloads: 
:Track('ctl00_ctl01|ctl00_ctl05',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/winvideo-nativecoding-crashdump.wmv" >WMV | :Track('ctl00_ctl01|ctl00_ctl06',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/ipod-nativecoding-crashdump-0.mp4">iPod | :Track('ctl00_ctl01|ctl00_ctl07',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/mp4video-nativecoding-crashdump-1.mp4" >MP4 | :Track('ctl00_ctl01|ctl00_ctl08',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/3gpvideo-nativecoding-crashdump.3gp" >3GP | :Track('ctl00_ctl01|ctl00_ctl09',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/zune-nativecoding-crashdump-0.wmv" >Zune | :Track('ctl00_ctl01|ctl00_ctl10',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/pspvideo-nativecoding-crashdump.zip">PSP
 
Audio Downloads: 
:Track('ctl00_ctl01|ctl00_ctl11',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/aacaudio-nativecoding-crashdump.aac" >AAC | :Track('ctl00_ctl01|ctl00_ctl12',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/winaudio-nativecoding-crashdump.wma">WMA | :Track('ctl00_ctl01|ctl00_ctl13',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/mp2audio-nativecoding-crashdump.mp2" >MP2 | :Track('ctl00_ctl01|ctl00_ctl14',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/mp3audio-nativecoding-crashdump.mp3" >MP3 | :Track('ctl00_ctl01|ctl00_ctl15',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/mp4audio-nativecoding-crashdump.m4a" >MP4  
 
:Track('ctl00_ctl01|ctl00_ctl16',this);" href="http://download.microsoft.com/download/e/c/2/ec221dcb-e0f1-4cda-a252-a6eab3fc75a4/samplecode-nativecoding-crashdump.zip">Download the code

반응형

+ Recent posts