환경 디버깅

[Microsoft] 2023. 12. 6. 21:02

환경 디버깅

  • 아티클
  • 2023. 04. 14.
  •  

사용 가능한 디버깅 환경은 다음과 같습니다.

  • WinDbg
  • WinDbg(클래식)
  • 커널 디버거(KD)
  • NTKD
  • 콘솔 디버거(CDB)
  • NTSD(NT 심볼 디버거)

다음 섹션에서는 디버깅 환경에 대해 설명합니다.

Windbg

WinDbg는 최신 시각적 개체, 더 빠른 창, 본격적인 스크립팅 환경을 갖춘 최신 버전의 WinDbg로, 확장 가능한 디버거 데이터 모델을 전면과 가운데로 빌드합니다. WinDbg는 WinDbg(클래식)와 동일한 기본 엔진을 사용하므로 사용하던 모든 명령, 확장 및 워크플로는 이전처럼 계속 작동합니다.

자세한 내용은 WinDbg 기능을 참조하세요.

WinDbg(클래식)

Microsoft Windows 디버거 WinDbg(클래식)는 사용자 모드와 커널 모드 디버깅을 모두 수행할 수 있는 Windows 기반 디버거입니다. WinDbg는 Windows 커널, 커널 모드 드라이버 및 시스템 서비스뿐만 아니라 사용자 모드 애플리케이션 및 드라이버에 대한 디버깅을 제공합니다.

WinDbg는 소스 수준 디버깅에 Visual Studio 디버그 기호 형식을 사용합니다. PDB 기호 파일이 있는 모듈에서 기호 또는 변수에 액세스할 수 있으며 COFF 기호 파일(예: Windows .dbg 파일)으로 컴파일된 모듈에서 노출되는 모든 공용 함수의 이름에 액세스할 수 있습니다.

WinDbg는 소스 코드를 보고, 중단점을 설정하고, 변수(C++ 개체 포함), 스택 추적 및 메모리를 볼 수 있습니다. 디버거 명령 창을 사용하면 다양한 명령을 실행할 수 있습니다.

커널 모드 디버깅의 경우 WinDbg에는 일반적으로 두 대의 컴퓨터(호스트 컴퓨터 및 대상 컴퓨터)가 필요합니다. WinDbg는 사용자 모드 및 커널 모드 대상 모두에 대한 다양한 원격 디버깅 옵션도 지원합니다.

WinDbg는 CDB/NTSD 및 KD/NTKD에 대응하는 그래픽 인터페이스입니다.

Kd

Microsoft KD(커널 디버거)는 모든 NT 기반 운영 체제에서 커널 모드 활동을 심층 분석할 수 있는 문자 기반 콘솔 프로그램입니다. KD를 사용하여 커널 모드 구성 요소 및 드라이버를 디버그하거나 운영 체제 자체의 동작을 모니터링할 수 있습니다. KD는 다중 프로세서 디버깅도 지원합니다.

일반적으로 KD는 디버그 중인 컴퓨터에서 실행되지 않습니다. 커널 모드 디버깅을 위해 두 대의 컴퓨터( 호스트 컴퓨터 및 대상 컴퓨터)가 필요합니다.

NTKD

NTKD라는 KD 디버거의 변형이 있습니다. KD는 KD가 호출된 명령 프롬프트 창을 상속하는 반면, KD는 시작할 때 새 텍스트 창을 생성한다는 점을 제외하고 모든 면에서 KD와 동일합니다.

Cdb

Microsoft CDB(콘솔 디버거)는 Windows 사용자 모드 메모리 및 구문을 하위 수준 분석할 수 있는 문자 기반 콘솔 프로그램입니다. 콘솔 디버거라는 이름은 CDB가 콘솔 애플리케이션으로 분류되었음을 나타내는 데 사용됩니다. 대상 애플리케이션이 콘솔 애플리케이션이어야 한다는 의미는 아닙니다. 실제로 CDB는 콘솔 애플리케이션과 그래픽 Windows 프로그램을 모두 디버깅할 수 있습니다.

CDB는 현재 실행 중이거나 최근에 중단된 프로그램(라이브 분석)을 디버깅하는 데 매우 강력하지만 설정이 간단합니다. 작업 애플리케이션의 동작을 조사하는 데 사용할 수 있습니다. 실패한 애플리케이션의 경우 CDB를 사용하여 스택 추적을 가져오거나 유죄 매개 변수를 확인할 수 있습니다. 문자 기반이므로 네트워크(원격 액세스 서버 사용)에서 잘 작동합니다.

CDB를 사용하면 프로그램 코드를 표시 및 실행하고, 중단점을 설정하고, 메모리의 값을 검사하고 변경할 수 있습니다. CDB는 이진 코드를 디스어셈블하고 어셈블리 지침을 표시하여 이진 코드를 분석할 수 있습니다. 소스 코드를 직접 분석할 수도 있습니다.

CDB는 주소 또는 전역 기호를 통해 메모리 위치에 액세스할 수 있으므로 주소가 아닌 이름으로 데이터 및 지침을 참조하여 코드의 특정 섹션을 쉽게 찾고 디버그할 수 있습니다. CDB는 여러 스레드 및 프로세스 디버깅을 지원합니다. 확장 가능하며 페이징된 메모리와 페이징되지 않은 메모리를 모두 읽고 쓸 수 있습니다.

대상 애플리케이션 자체가 콘솔 애플리케이션인 경우 대상은 CDB와 콘솔 창을 공유합니다. 대상 콘솔 애플리케이션에 대한 별도의 콘솔 창을 생성하려면 -2 명령줄 옵션을 사용합니다.

Ntsd

Microsoft NT NTSD(심볼 디버거)라는 CDB 디버거의 변형이 있습니다. CDB는 시작 시 새 텍스트 창을 생성하는 반면 CDB는 호출된 명령 프롬프트 창을 상속한다는 점을 제외하고 모든 면에서 CDB와 동일합니다.

시작 명령을 사용하여 새 콘솔 창을 생성할 수도 있으므로 다음 두 가지 구성에서 동일한 결과를 제공합니다.

콘솔
start cdb parameters
ntsd parameters

커널 디버거(Visual Studio, WinDbg 또는 KD)에서 제어할 수 있도록 NTSD(또는 CDB)에서 입력 및 출력을 리디렉션할 수 있습니다. 이 기술을 NTSD와 함께 사용하면 콘솔 창이 전혀 표시되지 않습니다. 따라서 커널 디버거에서 NTSD를 제어하면 대상 애플리케이션이 포함된 컴퓨터에 거의 부담을 주지 않는 매우 가벼운 디버거가 발생하므로 특히 유용합니다. 이 조합은 시스템 프로세스, 종료 및 부팅의 이후 단계를 디버그하는 데 사용할 수 있습니다. 자세한 내용은 커널 디버거에서 User-Mode 디버거 제어 를 참조하세요.

참고 항목

Windows 디버깅 도구

WinDbg 기능

'[Microsoft]' 카테고리의 다른 글

Kernel-Mode 디버깅 설정  (0) 2023.12.06
32비트 또는 64비트 디버깅 도구 선택  (0) 2023.12.06
WinDbg 시작(커널 모드)  (0) 2023.12.06
WinDbg 시작(사용자 모드)  (0) 2023.12.06
Windows 디버깅 시작  (0) 2023.12.06
Posted by gurupia
,