본문 바로가기
Computer/Debugging

유저 모드 디버깅

by 이재만박사 2018. 6. 5.

유저 모드 - 일반적인 응용 프로그램이 동작하는 환경을 의미

 

응용 프로그램들은 이런 환경에서 각 프로세스로 실행

프로세스마다 2GB의 별도의 메모리 공간을 가지고 있다

 

프로세스들은 서로의 메모리를 침범할 수 없다

 

오직 자신의 메모리 공간만 사용할 수 있다

 

물론 많은 응용 프로그램이 잘못된 메모리에 접근해 중지

계산을 잘못해 중지

 

프로세스마다 별도의 메모리 공간을 사용하므로 하나의 프로세스가 잘못해 자신의 메모리 공간을 망치더라도 다른 프로세스에는 영향을 미치지 않는다.

 

유저모드에서 실행되는 프로세스에 문제가 발생하더라도 운영체제가 동작하는 커널모드에는 영향을 미치지 않는다.

유저 모드의 프로세스만 중지된다.

 

유저 모드 디버깅 - 유저모드에서 실행된 프로세스를 대상으로 디버깅하는 것

 

디버거가 응용 프로그램 1에 연결된 상태라면 응용 프로그램 2는 이 디버거에서 확인할 수 없다.

 

응용 프로그램 2를 디버깅하려면 디버거를 하나 더 실행시켜 응용 프로그램 2에 연결해야 한다.

 

 

WinDbg를 사용하면 비주얼 스튜디오로 디버깅하는 것보다 훨씬 더 강력한 디버깅 할 수 있음.

 

WindDbg가 제공하는 다양한 명령을 이용하면 발생한 문제에 대한 더 자세한 정보를 얻을 수 있다.

 

유저모드 디버깅에 사용할 수 있는 명령인지 확인하려면 WinDbg 명령 도움말에서 Environment를 잘 확인해야 한다.

 

유저모드 디버깅 대상에는 일반 응용 프로그램, 서비스 응용프로그램, 문제가 발생했을 때 생성되는 메모리 덤프 파일

 

 

일반 응용 프로그램은 보통 WinDbg로 실행시키면서 디버깅

 

비주얼 스튜디오에서 F5로 실행하면서 디버깅하는 것과 같은 방법

 

서비스 응용 프로그램은 일반적인 응용 프로그램이 아니므로 이런 방법으로 디버깅할 수 없음

 

이런 경우는 이미 실행 중인 서비스 응용 프로그램에 붙여서 디버깅하는 기능을 사용

 

디버깅할 서비스에 WinDbg를 붙이면 그 다음부터는 서비스 내부를 마음대로 디버깅

 

물론 이 방법은 응용 프로그램에도 사용할 수 있다

 

메모리 덤프 파일은 응용 프로그램에 문제가 발생할 때 상태가 저장된 파일

 

WinDbg로 메모리 덤프 파일을 열면 문제가 발생했던 상태가 보여지므로 마치 조금 전에 실행하다가 막 중단된 시점을 디버깅하는 느낌으로 문제의 원인을 찾아갈 수 있다

 

댓글