맨위로가기

WinDbg

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

WinDbg는 마이크로소프트에서 개발한 윈도우용 강력한 디버거로, Visual Studio 디버거와 유사한 GUI를 제공하지만 더 많은 기능을 갖추고 있다. 심볼 서버를 통해 디버깅 심볼 파일을 자동으로 로드하고, 사용자 모드 및 커널 모드 메모리 덤프를 디버깅하는 데 사용된다. WinDbg는 독립 실행형 패키지로 배포되며, KD, CDB, NTSD와 같은 명령줄 디버거의 공통 백엔드 역할을 한다. 확장 DLL을 로딩하여 기능을 확장할 수 있으며, 가상 머신 위에서 실행되는 윈도우 커널을 디버깅하는 기능도 지원한다. 2023년에는 WinDbg Preview의 새 버전이 출시되었다.

더 읽어볼만한 페이지

  • 디버거 - Valgrind
    Valgrind는 동적 분석 도구들의 프레임워크로, 가상 머신 기반으로 작동하며 메모리 오류 감지, 멀티스레드 코드 분석 등 다양한 기능을 제공하지만, 정적 또는 스택 할당 데이터의 경계 오류는 모두 감지하지 못한다.
  • 디버거 - Eclipse (소프트웨어)
    이클립스는 IBM에서 개발한 자바 기반의 통합 개발 환경으로, OSGi 서비스 플랫폼을 런타임 아키텍처로 사용하며, 플러그인을 통해 기능을 확장할 수 있고, 이클립스 퍼블릭 라이선스를 따르며, 한국어를 지원한다.
WinDbg - [IT 관련 정보]에 관한 문서
WinDbg 개요
최신 릴리스 버전1.2407.24003.0
최신 릴리스 날짜2024년 8월
운영 체제Microsoft Windows
장르디버거
라이선스상업
웹사이트Microsoft Learn

2. 역사

이전 결과물이 제공되지 않았기 때문에 수정 작업을 수행할 수 없습니다. 이전 결과물을 제공해주시면 지시사항에 맞춰 수정해 드리겠습니다.

3. 주요 기능

WinDbg는 사용자 모드 및 커널 모드 디버깅을 모두 지원하며, 블루 스크린(버그 검사) 발생 후 생성된 메모리 덤프(크래시 덤프) 분석을 통해 오류 원인을 파악할 수 있다.[6] SymSrv (SymSrv.dll)를 통해 디버깅 심볼 파일(PDB 파일 등)을 자동으로 로드하여 소스 코드와 바이너리를 연결할 수 있다.[4]

3. 1. 디버깅 방식

WinDbg는 Visual Studio 디버거와 마찬가지로 그래픽 사용자 인터페이스(GUI)를 가지고 있지만, 더 강력하다는 점 외에는 거의 차이가 없다. WinDbg는 사용자가 직접 파일을 찾을 필요 없이, 실행 파일에 내장된 고유 ID("RSDS Guid"[3] 사용)를 사용하여 SymSrv (SymSrv.dll)를 통해 서버에서 디버깅 심볼 파일(예: PDB 파일)을 자동으로 로드할 수 있다.[4] 개인 심볼 서버가 구성되어 있으면, 심볼을 바이너리의 소스 코드와 연관시킬 수 있다. 이는 디버깅 대상에 다양한 버전의 바이너리가 설치된 문제를 디버깅할 때, 디버그 호스트에 특정 심볼 버전을 찾아서 설치할 필요가 없으므로 부담을 덜어준다. Microsoft는 Windows 2000 이상 버전의 Windows(서비스 팩 포함)에 대한 대부분의 공용 심볼을 갖춘 공용 심볼 서버를 운영하고 있다.[5]

WinDbg는 또한 일반적으로 블루 스크린이라고 불리는 현상(버그 검사) 발생 후 생성된 커널 모드 메모리 덤프를 디버깅하는 데 사용할 수 있다.[6] 사용자 모드 크래시 덤프를 디버깅하는 데에도 사용할 수 있는데, 이는 사후 분석 디버깅이라고 알려져 있다.[7]

WinDbg는 [https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/#install-windbg-directly Windows 디버거 포털] 및 [https://www.microsoft.com/store/productId/9PGJGD53TN86?ocid=pdpshare Microsoft Store]에서 독립 실행형 패키지로 배포된다. WinDBG 디버거 엔진은 WinDbg와 명령줄 디버거 프론트 엔드인 [https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-kd-and-ntkd KD], [https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-cdb-and-ntsd CDB], [https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-cdb-and-ntsd NTSD] 간의 공통 디버깅 백엔드이다. 대부분의 명령은 포함된 모든 디버거 프론트 엔드에서 그대로 사용할 수 있다.

2023년 Microsoft는 2017년에 WinDbg Preview (WinDbgX)로 발표되었던 WinDbg의 새 버전을 출시했다.[8] 가장 주목할 만한 기능 중 하나는 소위 시간 여행 디버깅 (TTD)이다.[9] TTD를 사용하면 사용자가 실제 라이브 프로세스를 기록하여(성능 저하 발생) 나중에 시간을 앞뒤로 이동하며 디버깅할 수 있다. 또한 WinDbg는 업데이트된 사용자 인터페이스, 다크 모드 지원 및 키보드 탐색을 제공한다. JavaScript 언어로 스크립트를 작성할 수도 있다.[10][11]

3. 2. 심볼 서버 지원

WinDbg는 사용자가 직접 파일을 찾을 필요 없이, 실행 파일에 내장된 고유 ID("RSDS Guid"[3] 사용)를 사용하여 SymSrv (SymSrv.dll)를 통해 서버에서 디버깅 심볼 파일(예: PDB 파일)을 자동으로 로드할 수 있다.[4] 개인 심볼 서버가 구성되어 있으면, 심볼을 바이너리의 소스 코드와 연관시킬 수 있다. 이는 디버깅 대상에 다양한 버전의 바이너리가 설치된 문제를 디버깅할 때, 디버그 호스트에 특정 심볼 버전을 찾아서 설치할 필요가 없으므로 부담을 덜어준다. Microsoft는 윈도우 2000 이상 버전의 Windows(서비스 팩 포함)에 대한 대부분의 공용 심볼을 갖춘 공용 심볼 서버를 운영하고 있다.[5]

3. 3. 확장 기능

WinDbg는 확장 DLL을 로딩하여 디버거의 기능을 확장할 수 있다.[28] 이러한 확장 기능은 WinDbg를 강력한 디버거로 만드는 데 중요한 역할을 한다. 마이크로소프트 제품 팀은 윈도우를 빌드하는 데 WinDbg를 사용하며, 윈도우 디버깅에 필요한 모든 기능은 확장 DLL에 포함되어 있다.

확장 명령어는 항상 '!' 접두어를 사용한다.

대부분의 확장 DLL은 윈도우 패키지를 위한 공용 디버깅 툴들을 구성하지만, 일부는 마이크로소프트 내부에서만 사용된다.[12] 확장 모델은 윈도우의 디버깅 툴들에 포함된 도움말 파일 안에 문서화되어 있다.[13]

3. 3. 1. Ext.dll

Ext는 WinDbg와 함께 출시되며, 기본적으로 로드되는 표준 윈도우 디버거 확장이다. 가장 많이 사용되는 명령어는 '''!analyze -v'''[29][14]이며, 충돌이나 행(hang) 상태일 때 디버깅되는 프로그램의 현재 상태와 머신/프로세스 상태를 분석한다. 이 명령은 종종 현재 문제를 완전히 자동화된 방식으로 디버깅할 수 있다.

옵션 없이 '''!analyze'''를 사용하면 간단하게 분석 결과를 보여주며, '''-v'''와 '''-vv'''는 더 자세한 분석을 보여준다.

3. 3. 2. Wow6432exts.dll

Wow6432exts는 WinDbg와 함께 제공되는 표준 윈도우 디버거 확장으로, WOW64에서 실행되는 32비트 프로세스를 디버깅하는 데 사용된다.[30][15]

3. 3. 3. SOS.dll

SOS (Son of Strike) 디버깅 확장 (SOS.dll)은 내부 공용 언어 런타임(CLR) 환경에 대한 정보를 제공하여 비주얼 스튜디오 및 WinDbg에서 관리되는 프로그램의 디버깅을 돕는다.[31] SOS.dll은 .NET 프레임워크와 함께 자동으로 설치된다. 비주얼 스튜디오에서 SOS.dll을 사용하려면 윈도우즈 드라이버 키트 (WDK)를 설치해야 한다.[32] 프로세스나 메모리 덤프를 디버깅하려면 sos.dll 버전이 .NET 프레임워크 버전과 일치해야 한다. Psscor2와 Psscor4는 SOS의 상위 집합이다. 이 도구를 사용하려면 프로젝트에서 비관리형 디버깅을 활성화해야 한다.

3. 3. 4. Psscor2.dll

Psscor2는 .NET CLR 버전 2.0(.NET Framework 버전 2~3.5)을 사용하는 .NET Framework 응용 프로그램을 디버깅하는 데 사용되는 윈도우 디버거 확장이다. Psscor2는 마이크로소프트의 제품 지원 서비스 도구의 일부로 마이크로소프트 내부 사용을 위해 개발되었다.[18] 마이크로소프트는 2010년에 Psscor2를 공개했지만,[19] 몇 년 전부터 해당 확장의 명령을 게시해 왔으며,[20] 이로 인해 마이크로소프트의 프로세스를 따르려는 사람들에게 어려움을 겪게 했다.[33]

3. 3. 5. Psscor4.dll

Psscor4는 .NET 프레임워크 4 애플리케이션 디버깅에 사용되는 윈도우 디버거 확장이다.

4. 가상 머신과의 연결

WinDbg는 VM웨어, VPC, 패러럴즈 등의 가상 머신 환경에서 실행되는 윈도우 커널을 디버깅할 수 있다. 이는 명명된 파이프 및 가상 COM 포트를 통해 연결되어 가능하다.[34] VirtualKD 확장 기능은 디버깅 속도를 향상시킬 수 있다.[21] 윈도우 8 이후로는 네트워크를 통한 커널 디버깅이 지원된다.[35]

5. 프로토콜

WinDbg 프로토콜은 문서화되어 있지 않지만, IDA 프로 및 radare2 역어셈블러에서 지원된다.

참조

[1] 웹사이트 WinDbg release notes https://learn.micros[...] 2024-08-30
[2] 웹사이트 Download the Windows Driver Kit (WDK) https://msdn.microso[...] 2018-04-23
[3] 웹사이트 PE/COFF Specification Addendum https://github.com/d[...] 2024-03-11
[4] 웹사이트 Debugging with Symbols (Windows) https://support.micr[...] 2018-04-23
[5] 웹사이트 Microsoft public symbol server https://msdn.microso[...] 2018-04-23
[6] 웹사이트 How do I use WinDBG Debugger to troubleshoot a Blue Screen of Death? http://www.techrepub[...] 2009-12-18
[7] 웹사이트 Post-mortem debugging of .NET applications using WinDbg https://tewarid.gith[...] 2010-09-10
[8] 웹사이트 New WinDbg available in preview! – Debugging Tools for Windows https://blogs.msdn.m[...] 2019-08-13
[9] 웹사이트 Leveraging the new WinDbgX and Time-Travel-Trace –Script to list all access to files – Rodney Viana's (MSFT) Blog https://blogs.msdn.m[...] 2019-08-13
[10] 웹사이트 Easier WinDbg scripting with Javascript for malware research – Avar 2018 https://aavar.org/av[...] 2019-08-13
[11] 웹사이트 What is WinDbg https://learn.micros[...] 2024-07-27
[12] 웹사이트 .load, .loadby (Load Extension DLL) https://msdn.microso[...] 2018-04-23
[13] 웹사이트 MSDN Magazine Issues https://msdn.microso[...] 2018-04-23
[14] 웹사이트 analyze https://msdn.microso[...] 2018-04-23
[15] 웹사이트 Debugging WOW64 (Windows) https://msdn.microso[...] 2018-04-23
[16] 웹사이트 SOS Debugging of the CLR, Part 1 http://blogs.msdn.co[...] 2018-04-23
[17] 웹사이트 SOS.dll (SOS Debugging Extension) https://msdn.microso[...] 2018-04-23
[18] 웹사이트 New debugger extension for .NET (PSSCOR2) http://blogs.msdn.co[...] 2018-04-23
[19] 웹사이트 New debugger extension for .NET, Psscor2, released http://blogs.msdn.co[...] 2018-04-23
[20] 웹사이트 MSDN Magazine Issues http://msdn.microsof[...] 2018-04-23
[21] 웹사이트 VirtualKD - Windows Kernel Debugger Booster for Virtual Machines http://virtualkd.sys[...] 2018-04-23
[22] 웹사이트 Setting Up Kernel-Mode Debugging over a Network Cable Manually https://msdn.microso[...] 2018-04-23
[23] 문서 https://msdn.microso[...]
[24] 웹인용 보관된 사본 http://www.techrepub[...] 2015-10-25
[25] 웹인용 보관된 사본 https://delog.wordpr[...] 2015-10-25
[26] 문서 https://support.micr[...]
[27] 문서 https://msdn.microso[...]
[28] 문서 https://msdn.microso[...]
[29] 문서 https://msdn.microso[...]
[30] 문서 https://msdn.microso[...]
[31] 문서 http://blogs.msdn.co[...]
[32] 문서 https://msdn.microso[...]
[33] 문서 http://blogs.msdn.co[...]
[34] 문서 http://virtualkd.sys[...]
[35] 문서 https://msdn.microso[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com