[Troubleshooting Tools] Dr. Watsn (홈즈는 ?) Windows debugging

Dr. Watson은 기본적인 Crash Handler Registry에 다음과 같이 설정함으로써 Crash가 발생했을 때, Crash Dump를 수집할 수 있도록 도와 주는 Tool입니다.

 

** Crash ?

User Mode에서 Crash란 특정 Process가 예기치 않게 OS에 의해서 종료(terminated)되거나 Hang을 유발하는 현상을 말합니다. 간혹, Event Log Access Violation 이벤트가 등록될 수도 있습니다. 일반적으로 Crash는 다음의 원인에 의해서 발생할 수 있습니다.

 

 - 잘못된 Pointer의 사용

 - Stack overflow

 - Buffer overflow/underflow

 - Mismatched/ damaged files의 사용

 - Heap memory corruption

 - Stack memory corruption

 - Memory/Disk와 같은 Critical resource의 부족

*************

 

Crash 발생시 Dump를 수집하기 위해서 Dr. Watson을 설정하는 방법은 다음과 같이 합니다.

1.    다음의 registry key로 이동합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

2.    Debugger 값을 REG_SZ 로써 추가하거나 설정합니다. REG_SZ 문자열을 drwtsn32 -i 라고 입력합니다.

3.    만일, 사용자의 개입 없이 debugger가 수행되기를 바란다면, Auto 값을 REG_SZ 로써 추가하거나 설정합니다. 문자열 1을 설정하면 Dialog box Open되지 않습니다.

 

Dr. Watson은 모든 1st Chance Exceptions에 대해서는 무시하며, 모든 Unhandled Exceptions 2nd chance Exceptions에 대해서 수행됩니다.

 

  ** Exception은 프로그램의 실행에서 Abnormal Condition을 만나거나 Error가 발생했다는 것을 의미합니다. 만일, Debugger attach되어 있다면, 모든 Exceptions에 대해서 handling 이 됩니다. 프로그램이 해당 Exception을 처리하기에 앞서서 Debugger attach되어 있다면, Debugger는 해당 Exception handling 할 수 있습니다. 이 경우의 Exception 1st Chance Exception이라고 합니다. 만일, Debugger가 해당 Application을 계속적으로 수행하도록 허용하고 따로 Exception으로써 handling을 하지 않는 다면, Program은 해당 Exception을 만나게 되고, Program내부의 Exception handler에 의해 문제되지 않도록 처리하거나 아니면 무시되어 실행될 수 있습니다. Program에 의해서 처리되지 않는 Exceptions은 여전히 Debugger attach 되어 있는 환경에서 다시 Debugger에 의해 처리가 될 수 있는 데, 이는 2nd chance exception이라고 합니다. 만일, debugger가 이를 handling 하지 않는 다면, Unhandled Exception이 되어 이는 Application을 비정상 종료하도록 유도합니다. **

 

Vista SP1에서는 WER(Windows Error Reporting)을 통해서 User mode dump 수집을 가능하게 합니다. 사용하는 Registry KeyHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps 입니다.

 

 - DumpFolder REG_EXPAND_SZ (default value: %LOCALAPPDATA%\CrashDumps

 - DumpCount REG_DWORD (default: 10)

 - DumpType REG_DWORD (default: 1) 1: mini dump, 2: Full dump

 

상위의 설정은 global 설정입니다. 만일, 특정 process를 위한 설정을 원한다면, registry 하위 키를 이용하여, 예를 들어, MyApp.exe 를 위한 설정은 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\MyApp.exe 에 설정하면 됩니다.

 


덧글

댓글 입력 영역