2016. 1. 20. 01:32ㆍ프로그래밍/ETC
WinDbg란
윈도우 디버거. NT 이상의 OS에서 OS와 응용프로그램 디버깅을 모두 지원하는 도구.
주요 기능
- 응용프로그램 디버깅(User Mode Debugging)
- 커널 모드 드라이버 디버깅(Kernel Mode Debugging)
- 크래시 덤프 파일 분석
- 윈도우 시스템 분석
- 스크립트와 확장 DLL
- 디버깅 도움말
커널 모드 드라이버 디버깅, 크래시 덤프 파일 분석 WinDbg만의 특징.
덤프 파일 : 윈도우가 응용프로그램이나 OS에서 문제를 발견했을 때 자동으로 생성하는 파일.
WinDbg 종류
유저모드 디버깅
유저모드 - 일반적으로 응용프로그램이 동작하는 환경을 의미한다.
응용프로그램은 이런 환경에서 각 프로세스로 실행되며 별도 2G의 메모리 공간을 가지고 있다.(32비트 기준)
0 ~ 0x7FFFFFFF 가상 메모리에 붙어 해당 프로세스를 디버깅 하는 것.
커널모드 디버깅
커널모드 - 운영체제와 커널모드 드라이버들이 동작하는 환경을 의미한다.
0x80000000 ~ 0xFFFFFFFF의 2G 메모리 공간을 사용한다.
유저모드와 달리 가상 메모리 공간에 운영체제와 드라이버들이 공존한다.
서로의 메모리를 침범할 위험이 있다. -> 블루스크린.
라이브 디버깅
유저모드 라이브 디버깅 - 실행 중인 어떤 프로세스를 디버깅.
커널모드 라이브 디버깅 - 두 개 PC로 호스트 PC를 WinDbg를 실행하고 타겟 PC에 테스트할 드라이버를 동작시켜 디버깅하는 방법.
덤프 디버깅
유저모드, 커널모드에서 오류가 발생했을 때 메모리 덤프 파일을 분석하여 디버깅하는 것이다.
메모리 덤프 파일 - 오류가 발생한 시점의 레지스터, 콜 스택, 메모리, 프로세스, 스레드 정보 등이 저장되어 마지막 순간을 보존하는 역할.
유저 덤프
프로세스의 메모리 영역을 파이롤 만들어 준다. 미니 덤프와 전체 덤프 두 종류가 있다.
미니 덤프 - 64KB의 크기로 레지스터, 콜 스택, 프로세스 정보, 스레드 정보, 오류 발생한 시점에 접그했던 메모리 일부만 저장한다.
전체 덤프 - 오류가 발생한 시점에 그 프로세스가 사용하고 있던 메모리를 모두 파일로 저장한다.
커널 덤프
미니 덤프 - 위와 같다.
커널 메모리 덤프 - 커널 메모리에 해당하는 영역만 저장한다. 운영체제와 드라이버는 확인할 수 있지만 유저모드의 프로세스는 알 수 없다.
전체 덤프 - 유저모드, 커널 모드 메모리 모두를 고스란히 저장한다.
디버그 심볼 파일
디버그 심볼 파일 - 실행 파일을 빌드할 때 생성되는 디버그용 정보 파일.
심볼을 로드하는 것이 기본 중의 기본.
가장 괜찮은 방법은 웹 심볼을 사용하는 것이다.
MS에서 해당 디버깅에 필요한 심볼만 받아서 디버깅 할 수 있다.
이것처럼 개발자도 개발하는 제품의 심볼 파일을 가지고 있어야한다.
'프로그래밍 > ETC' 카테고리의 다른 글
[curl] 윈도우 환경에서 라이브러리 빌드하기 (0) | 2017.01.12 |
---|---|
[Tool] PC 상태 관찰할 수 있는 유용한 툴들 (4) | 2017.01.11 |
[OpenSSL] Windows에서 컴파일하기 (2) | 2017.01.11 |
[erlang, notepad++] erlang 플러그인 설치 (2) | 2016.01.03 |
[디버깅] 조건 디버깅(VS2015) (3) | 2016.01.02 |
[디버깅] 메모리 디버깅(VS2015) (0) | 2016.01.02 |
[erlang] 예외 (2) | 2015.12.23 |