YaChudo

WinDbg

Переглядів: 0. Оновлено 10.10.2026.

WinDbg
Типзневаджувач Редагувати інформацію у Вікіданих
РозробникMicrosoft Редагувати інформацію у Вікіданих
Версії6.12.2.633 (26 лютого 2010)
ПлатформаWindows Редагувати інформацію у Вікіданих
ЛіцензіяЛіцензійна угода з кінцевим користувачем Microsoftd Редагувати інформацію у Вікіданих
Вебсайтdocs.microsoft.com/windows-hardware/drivers/debugger/debugger-download-tools Редагувати інформацію у Вікіданих

WinDbg — це багатофункціональний налагоджувач для операційної системи Microsoft Windows, який поширюється компанією Microsoft.[1] Він може використовуватися для налагодження застосунків у режимі користувача, драйверів пристроїв та самої операційної системи в режимі ядра.

Огляд

Як і налагоджувач Visual Studio, WinDbg має графічний інтерфейс користувача (GUI), але є потужнішим і має з ним мало спільного в інших аспектах. WinDbg може автоматично завантажувати файли «символів налагодження» (наприклад, файли PDB) із сервера, використовуючи унікальний ідентифікатор, вбудований у виконуваний файл (за допомогою «RSDS Guid»[2]), через SymSrv (SymSrv.dll),[3] замість того, щоб вимагати від користувачів вручну знаходити ці файли. Якщо налаштовано приватний сервер символів, символи можна зіставити з початковим кодом бінарного файлу. Це полегшує налагодження проблем, за яких на цільовій системі налагодження встановлено різні версії бінарних файлів, усуваючи необхідність пошуку та встановлення відповідної версії символів на вузлі налагодження. Microsoft має загальнодоступний сервер символів, який містить більшість загальнодоступних символів для Windows 2000 і новіших версій Windows (включно з пакетами оновлень).[4]

WinDbg також можна використовувати для налагодження дампів пам'яті в режимі ядра, створених після того, що зазвичай називають «синім екраном смерті», який виникає після видачі перевірки помилки (bug check).[5] Його також можна використовувати для налагодження дампів аварійного завершення роботи в режимі користувача. Це називається посмертним налагодженням (англ. post-mortem debugging).[6]

WinDbg поширюється як окремий пакет через Windows Debugger Portal та через Microsoft Store. Ядро налагоджувача WinDBG є спільною внутрішньою частиною налагодження між WinDbg та налагоджувачами командного рядка, такими як https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-kd-and-ntkd KD], CDB, та NTSD. Більшість команд можна використовувати без змін з усіма включеними інтерфейсами налагоджувача.

У 2023 році Microsoft випустила нову версію WinDbg, яку у 2017 році було анонсовано як WinDbg Preview (WinDbgX).[7] Однією з найпомітніших функцій є так зване налагодження з перемотуванням у часі (англ. Time-Travel Debugging, TTD).[8] TTD дозволяє користувачеві записувати фактичний активний процес (зі зниженням продуктивності), щоб згодом налагоджувати його, переміщуючись уперед і назад у часі. Крім того, WinDbg має оновлений інтерфейс користувача, підтримку темного режиму та навігації за допомогою клавіатури. Він також дозволяє писати сценарії мовою JavaScript.[9][10]

Розширення

WinDbg дозволяє завантажувати DLL-бібліотеки розширень[11], які можуть розширювати набір підтримуваних налагоджувачем команд і допомагати в налагодженні специфічних сценаріїв: наприклад, відображати документ MSXML за наявності IXMLDOMDocument або налагоджувати Common Language Runtime (CLR).[12] Ці розширення є значною частиною того, що робить WinDbg таким потужним налагоджувачем. WinDbg використовується командою розробників Microsoft Windows для створення Windows, і все необхідне для налагодження Windows міститься в цих DLL-бібліотеках розширень.

Команди розширень завжди мають префікс !.

Хоча деякі розширення використовуються лише всередині Microsoft, більшість із них є частиною загальнодоступного пакета Debugging Tools for Windows.

Модель розширень описана у файлі довідки, що входить до складу Debugging Tools for Windows.

Ext.dll

Ext — стандартне розширення Windows Debugger, яке постачається разом із WinDBG і завантажується за замовчуванням.

Команда !analyze

Найчастіше використовуваною командою є !analyze -v,[13] яка аналізує поточний стан програми, що налагоджується, а також стан машини/процесу в момент аварійного завершення або зависання. Ця команда часто здатна повністю автоматично налагодити поточну проблему.

Якщо використовувати !analyze без будь-яких перемикачів, команда просто повертає результати свого аналізу. Параметри -v і -vv надають додаткові відомості про цей аналіз.

Wow6432exts.dll

Wow6432exts — стандартне розширення Windows Debugger, яке постачається разом із WinDBG. Воно використовується для налагодження процесів, що виконуються всередині WoW64 (32-бітних процесів, що виконуються у 64-бітній Windows).[14]

SOS.dll

Розширення для налагодження SOS (Son of Strike)[15] (SOS.dll) допомагає налагоджувати керовані програми у Visual Studio та WinDbg, надаючи інформацію про внутрішнє середовище середовища виконання спільної мови (CLR). Для використання цього засобу в проєкті має бути ввімкнено налагодження некерованого коду. SOS.dll автоматично встановлюється разом із .NET Framework. Щоб використовувати SOS.dll у Visual Studio, встановіть Windows Driver Kit (WDK).[16] Для налагодження процесу або дампа пам'яті версія sos.dll повинна відповідати версії .NET Framework. Psscor2 і Psscor4 є розширеними надмножинами SOS.

Psscor2.dll

Psscor2 — це розширення Windows Debugger, яке використовується для налагодження застосунків .NET Framework, що використовують версію 2.0 CLR .NET (.NET Framework версій від 2 до 3.5). Psscor2 було розроблено для внутрішнього використання в Microsoft як частину засобів Product Support Services.[17] Хоча Microsoft випустила Psscor2 лише у 2010 році,[18] Microsoft публікувала команди з цього розширення за кілька років до цього,[19] що створювало труднощі для тих, хто намагався відтворити описані ними процедури.

Psscor4.dll

Psscor4 — це розширення Windows Debugger, яке використовується для налагодження застосунків .NET Framework 4.

Взаємодія з віртуальними машинами

WinDbg дозволяє налагоджувати ядро Microsoft Windows, що працює на віртуальній машині, створеній за допомогою VMware, VPC або Parallels, використовуючи іменований канал. Це можна реалізувати за допомогою віртуального COM-порту. У випадку VMware та VirtualBox розширення VirtualKD додає нативну підтримку налагодження віртуальних машин до ядра Windows, заявляючи про прискорення налагодження до 45 разів.[20] Для Windows 8 і новіших версій дозволено налагодження ядра через мережу,[21] що забезпечує швидке налагодження ядра без спеціального налаштування.

Протокол

Протокол WinDbg не документований, але підтримується дизасемблерами IDA Pro та radare2.

Див. також

  • ProcDump
  • Microsoft Detours

Примітки

  1. ↑ EliotSeattle. Download the Windows Driver Kit (WDK). Msdn.microsoft.com. Процитовано 23 квітня 2018.
  2. ↑ PE/COFF Specification Addendum. Процитовано 11 березня 2024.
  3. ↑ Debugging with Symbols (Windows). Support.microsoft.com. Процитовано 23 квітня 2018.
  4. ↑ DOMARS. Microsoft public symbol server. Msdn.microsoft.com. Процитовано 23 квітня 2018.
  5. ↑ How do I use WinDBG Debugger to troubleshoot a Blue Screen of Death?. TechRepublic. 18 грудня 2009. Процитовано 23 квітня 2018.
  6. ↑ Post-mortem debugging of .NET applications using WinDbg. Tewarid.github.io. 10 вересня 2010. Процитовано 23 квітня 2018.
  7. ↑ New WinDbg available in preview! – Debugging Tools for Windows. blogs.msdn.microsoft.com. Процитовано 13 серпня 2019.
  8. ↑ Leveraging the new WinDbgX and Time-Travel-Trace –Script to list all access to files – Rodney Viana's (MSFT) Blog. blogs.msdn.microsoft.com. Процитовано 13 серпня 2019.
  9. ↑ Easier WinDbg scripting with Javascript for malware research – Avar 2018 (амер.). Процитовано 13 серпня 2019.
  10. ↑ What is WinDbg (амер.). Процитовано 27 липня 2024.
  11. ↑ DOMARS. .load, .loadby (Load Extension DLL). Msdn.microsoft.com. Процитовано 23 квітня 2018.
  12. ↑ MSDN Magazine Issues. Msdn.microsoft.com. Процитовано 23 квітня 2018.
  13. ↑ DOMARS. analyze. Msdn.microsoft.com. Процитовано 23 квітня 2018.
  14. ↑ Debugging WOW64 (Windows). Msdn.microsoft.com. Процитовано 23 квітня 2018.
  15. ↑ SOS Debugging of the CLR, Part 1. Blogs.msdn.com. Архів оригіналу за 28 червня 2010. Процитовано 23 квітня 2018.
  16. ↑ mairaw. SOS.dll (SOS Debugging Extension). Msdn.microsoft.com. Процитовано 23 квітня 2018.
  17. ↑ New debugger extension for .NET (PSSCOR2). Blogs.msdn.com. Процитовано 23 квітня 2018.
  18. ↑ New debugger extension for .NET, Psscor2, released. Blogs.msdn.com. Процитовано 23 квітня 2018.
  19. ↑ MSDN Magazine Issues. Msdn.microsoft.com. Процитовано 23 квітня 2018.
  20. ↑ VirtualKD - Windows Kernel Debugger Booster for Virtual Machines. Virtualkd.sysprogs.org. Процитовано 23 квітня 2018.
  21. ↑ DOMARS. Setting Up Kernel-Mode Debugging over a Network Cable Manually. Msdn.microsoft.com. Процитовано 23 квітня 2018.

Джерело: стаття у Вікіпедії та історія редагувань (автори).