Кіріспе

WinDbg – Microsoft Windows компьютерлік операциялық жүйесі үшін көп мақсатты жөндеу құралы, Microsoft тарапынан таратылады. Жөндеу – жүйедегі қателерді анықтап, жою процесі; компьютерлік технологияда бұл бағдарламалық қамтамасының ішкі жұмысын зерттеуді де қамтиды, бұл дамуға көмектеседі. Оны пайдаланушы режиміндегі бағдарламаларды, құрылғы драйверлерін және ядролық режимдегі операциялық жүйенің өзін жөндеу үшін қолдануға болады.

Шолу

Visual Studio Debugger сияқты WinDbg графикалық пайдаланушы интерфейсіне (GUI) ие, бірақ ол одан да қуаттырақ және көп ортақ ештеңесі жоқ. WinDbg серверден жөндеу символ файлдарын (мысалы, PDB файлдары) автоматты түрде жүктей алады, орындалатын файлға енгізілген бірегей идентификаторды (RSDS Guid-ты пайдаланып) SymSrv (SymSrv.dll) арқылы қолданады, бұл пайдаланушылардан файлдарды қолмен іздеуді қажет етпейді. Егер жеке символ сервері конфигурацияланған болса, символдар бинарлық кодтың бастапқы кодымен сәйкестендіріледі. Бұл жөндеу нысанына орнатылған бинарлық файлдардың әртүрлі нұсқалары бар мәселелерді жеңілдетеді, себебі жөндеу хостында нақты символ нұсқасын табу және орнату қажеттілігін жояды. Microsoft-тың Windows 2000 және одан кейінгі Windows нұсқалары үшін (сервис-пакеттерді қоса алғанда) көптеген қоғамдық символдары бар ашық символ сервері бар. WinDbg ядролық режимдегі жад құймаларын жөндеу үшін де қолданылуы мүмкін, олар әдетте «өлімнің көк экраны» деп аталатын қателіктерді тексеру кезінде туындайды. Одан әрі, ол пайдаланушы режиміндегі апатты құтқару құймаларын жөндеу үшін де қолданылады, бұл өлімнен кейінгі жөндеу деп аталады. WinDbg-дің соңғы нұсқалары Windows-қа арналған тегін жөндеу құралдары жиынтығының бөлігі ретінде таратылады және таратылуда, ол WinDbg және KD, CDB және NTSD сияқты командалық жол жөндеушілерінің алдыңғы бөліктері арасында ортақ жөндеу ядросын бөліседі. Көптеген командаларды барлық қосылған жөндеуші алдыңғы бөліктерімен өзгеріссіз пайдалануға болады. 2017 жылы Microsoft WinDbg-дің жаңа нұсқасын – WinDbg Preview (немесе WinDbgX) деп жариялады. WinDbg Preview-дің ең маңызды мүмкіндіктерінің бірі – уақыт саяхатымен жөндеу (TTD). Бұл идеяның мәні – пайдаланушы нақты тірі процесті (тиімділіктің төмендеуімен) кейіннен уақыт бойынша алға-артқа жылжу арқылы жөндеу үшін жаза алады. Бұл мүмкіндік кері инженерия процесінде ерекше пайдалы. Сонымен қатар, ол JavaScript тілінде сценарийлерді жазуға мүмкіндік береді.

Ұзартулар

WinDbg кеңейтім DLL-дерін жүктеуге мүмкіндік береді, олар жөндеу құралының қолдау көрсетілетін командаларын кеңейтеді және нақты жағдайларды жөндеуге көмектеседі: мысалы, IXMLDOMDocument арқылы MSXML құжатын көрсету немесе Common Language Runtime (CLR) жөндеу. Осы кеңейтімдер WinDbg-ді осыншалықты қуатты жөндеу құралы ететін маңызды бөліктердің бірі болып табылады. Microsoft Windows өнімдері тобы Windows-ты құру үшін WinDbg-ді пайдаланады, ал Windows-ты жөндеу үшін қажеттінің бәрі осы кеңейтім DLL-дерінде қамтылған. Кеңейтім командалары әрқашан ! белгісімен басталады. Кейбір кеңейтімдер тек Microsoft ішінде қолданылса, көпшілігі Windows үшін арналған Debugging Tools жинатымының құрамында болады. Кеңейтім моделі Windows үшін арналған жөндеу құралдарымен бірге келген анықтамалық файлында сипатталған.

Ext.dll

Ext — WinDBG құрамына енгізілген және автоматты түрде жүктелетін стандартты Windows отладкашысының кеңейтімдері.

! команданы талдау

Ең көп қолданылатын команда — !analyze v, ол қатесіз жұмыс істемейтін бағдарламаның ағымдағы күйін және құлау немесе тоқтау кезіндегі машинаның/процестің күйін талдайды. Бұл команда көбінесе ағымдағы мәселені толық автоматты түрде шеше алады. Ешқандай параметрлерсіз қолданылғанда !analyze талдау нәтижелерін ғана қайтарады. v және vv осы талдау туралы толықрақ мәлімет береді.

Wow6432exts.dll файлы

Wow6432exts – WinDBG құралымен бірге келетін стандартты Windows отладчик кеңейтімі. Ол WoW64-те (64-бит Windows жүйесінде іске қосылған 32-бит процестерде) жұмыс істейтін процестерді отладкалау үшін пайдаланылады.

SOS.dll

SOS (Страйк ұлы) қателерді жою кеңейтуі (SOS.dll) Visual Studio және WinDbg-да басқарылатын бағдарламаларды жөндеуге көмектеседі, ортақ тілдің (CLR) орындалу уақытының ішкі құрылымы туралы ақпарат ұсынады. Бұл құрал жобада басқарылмаған қателерді жою мүмкіндігі қосулы болуын қажет етеді. SOS.dll .NET Framework-пен бірге автоматты түрде орнатылады. Visual Studio-да SOS.dll пайдалану үшін Windows драйверлер жиынтығын (WDK) орнатыңыз. Процесті немесе жад төгілімін жөндеу үшін sos.dll нұсқасы .NET Framework нұсқасына сәйкес болуы керек. Psscor2 және Psscor4 – SOS-тің кеңейтілген нұсқалары.

Psscor2.dll

Psscor2 – NET CLR 2.0 нұсқасын пайдаланатын .NET Framework бағдарламаларын жөндеуге арналған Windows Debugger Extension. Бұл .NET Framework 2-ден 3.5 нұсқаларына қатысты. Psscor2 Microsoft компаниясының Өнімді қолдау қызметтерінің құралы ретінде ішкі пайдалану үшін әзірленген. Microsoft Psscor2-ні 2010 жылы ғана жарияласа да, оған дейін бірнеше жыл бойы кеңейтуден командаларды жариялап, осы процестерді орындауға тырысқандарға қиындық туғызды.

Psscor4.dll

Psscor4 — NET Framework 4 қолданбаларын түзетуге арналған Windows Debugger кеңейтімi.

Виртуалды машиналармен біріктіру

WinDbg VMware, VPC немесе Parallels-те іске қосылған Microsoft Windows ядросын атаулы түтік арқылы қателерді жоюға мүмкіндік береді. Бұл виртуалды COM портын пайдалану арқылы іске асырылады. VMware және VirtualBox жағдайында VirtualKD кеңейтім Windows ядросына VM қателерді жоюға арналған түпкілікті қолдауды қосады, бұл қателерді жою жылдамдығын 45 есеге дейін арттыруға мүмкіндік береді. Windows 8 және одан кейінгі нұсқаларында желі арқылы ядроны қателерді жоюға рұқсат етіледі, бұл ерекше конфигурациясыз жылдам ядроны қателерді жоюға мүмкіндік береді.

Хаттама

WinDbg протоколы құжатталмаған, бірақ IDA Pro және radare2 декомпиляторлары қолдайды.