Windows , IIS

처리되지 않은 예외

SungWookKang 2015. 7. 16. 19:05
반응형

처리되지 않은 예외

  • Windows Server 2008

 

모든 윈도우 스레드는 처리되지 않은 예외를 처리하는 예외 핸들러를 가진다. 이 예외 핸들러는 윈도우 내부에 start-of-thread 함수로 선언되어 있다. Start-of-thread 함수는 사용자가 프로세스를 생성하거나 추가적인 스레드를 생성할 때 실행한다. 이 함수는 최초의 스레드 컨텍스트 구조체에 명시된 환경 제공 스레드 시작 루틴을 호출 한다. 스레드 시작 루틴은 CreateThread 호출 시에 명시된 사용자 제공 시작 루틴을 호출 한다.

 

스레드 0의 시작 주소가 시스템 내의 모든 윈도우 프로세스에서 동일한지에 대해서는 윈도우의 각 스레드가 시스템 제공 함수 내에서 실행을 시작한다는 것으로 알 수 있다. (사용자 제공 함수의 주소를 살펴보려면 Process Explorer나 커널 디버서를 사용하면 확인 할 수 있다.)

 

스레드가 자신이 처리하지 않는 예외를 가진다면 윈도우 미처리 예외 필터(unhandled exception filter)가 호출 된다. 이 함수의 목적은 예외가 처리되지 않을 때 레지스터리 키의 내용과 프로세스가 예외 리스트에 있는지에 따라 시스템 정의 동작을 제공하는 것이다. 레지스트리 키 값에는 Auto와 Debugger가 있다.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

 

 

  • Auto : 디버거를 자동으로 실행할지 또는 사용자에게 실행 여부를 물어 볼것인지를 머치리 예외 필터에게 알려 준다. Microsoft 의 VisualStudio 같은 툴을 설치하면 이 값을 0으로 변경한다.
  • Debugger : 미처리 예외의 경우에 실행할 디버거 실행 파일의 경로를 가리키는 문자열이다.

 

 

[참고자료]

Windows Internals

 

반응형

'Windows , IIS' 카테고리의 다른 글

32비트, 64비트 시스템 서비스 디스패칭  (0) 2015.07.16
윈도우 오류 보고  (0) 2015.07.16
예외 디스패칭  (0) 2015.07.16
비동기 프로시저 호출 인터럽트  (0) 2015.07.16
소프트웨어 인터럽트  (0) 2015.07.16