Жад демптерін талдау үшін WinDBG орнату және конфигурациялау. Windows жөндеу құралдары: Windows пайдалану үшін BSOD жөндеу құралдарын диагностикалау және түзету

Маңызды сәтсіздік орын алған кезде Windows амалдық жүйесі бұзылып, өлімнің көк экранын (BSOD) көрсетеді. Мазмұны жедел жадыжәне орын алған қате туралы барлық ақпарат своп файлына жазылады. Келесі рет Windows жүктеусақталған деректерге негізделген отладтау ақпаратымен бұзылу демпі жасалады. Жүйе оқиғалары журналында маңызды қате жазбасы жасалады.

Назар аударыңыз!Егер дискінің ішкі жүйесі істен шықса немесе Windows жүктелуінің бастапқы кезеңінде маңызды қате орын алса, апаттық демп жасалмайды.

Windows Crash Dumps түрлері

Мысал ретінде ағымдағы Windows 10 операциялық жүйесін пайдалану ( Windows сервері 2016) жүйе жасай алатын жад демптерінің негізгі түрлерін қарастырыңыз:

  • Шағын жад қоқысы(256 КБ). Бұл файл түрі ақпараттың ең аз мөлшерін қамтиды. Ол тек BSOD қате туралы хабарды, драйверлер туралы ақпаратты, бұзылу кезінде белсенді болған процестерді және бұзылуды тудырған процесс немесе ядро ​​ағынын қамтиды.
  • Ядро жадысының демпі. Көлемі әдетте шағын — физикалық жад көлемінің үштен бірі. Ядро жадысының демпі шағын демпке қарағанда егжей-тегжейлі. Ол драйверлер мен ядро ​​режимінің бағдарламалары туралы ақпаратты қамтиды, Windows ядросына және аппараттық абстракциялық деңгейге (HAL) бөлінген жадты және драйверлерге және басқа ядролық режим бағдарламаларына бөлінген жадты қамтиды.
  • Толық жад демпі. Өлшемі бойынша ең үлкен және жүйенің жедел жадына тең жад пен осы файлды жасау үшін Windows талап ететін 1 МБ қажет.
  • Автоматты жад қоқысы. Ақпарат тұрғысынан ядро ​​жадысының демпіне сәйкес келеді. Жалғыз айырмашылық - бұл дамп файлын жасау үшін қанша орын қажет. Бұл файл түрі Windows 7 жүйесінде болмаған. Ол Windows 8 жүйесінде қосылған.
  • Белсенді жад демпі. Бұл түр жүйе ақаулығының себебін анықтай алмайтын элементтерді жояды. Бұл Windows 10 жүйесіне қосылды және виртуалды машинаны пайдалансаңыз немесе жүйеңіз Hyper-V хосты болса, әсіресе пайдалы.

Windows жүйесінде жад демпингін қалай қосуға болады?

Win+Pause көмегімен жүйе параметрлері терезесін ашыңыз, « Қосымша опцияларжүйелер"(Жетілдірілген жүйе параметрлері). Ішінде » Қосымша" (Қосымша), "" бөлімі (Іске қосу және қалпына келтіру) " түймесін басыңыз. Опциялар"(Параметрлер). Ашылған терезеде жүйе сәтсіз болғанда орындалатын әрекеттерді конфигурациялаңыз. « Оқиғаларды жүйелік журналға тіркеу" (Жүйе журналына оқиғаны жазу), жүйе бұзылған кезде жасалуы тиіс дамп түрін таңдаңыз. Егер құсбелгіде болса " Бар дамп файлын ауыстырыңыз«(Кез келген бар файлды қайта жазу) құсбелгісін қойыңыз, қате орын алған сайын файл қайта жазылады. Бұл құсбелгіні алып тастаған дұрыс, сонда талдау үшін қосымша ақпарат болады. Сондай-ақ Автоматты түрде қайта қосуды өшіріңіз.

Көп жағдайда BSOD себебін талдау үшін шағын жад демпі жеткілікті болады.

Енді BSOD пайда болған кезде, сіз демп файлын талдап, ақаулық себебін таба аласыз. Шағын дамп әдепкі бойынша %systemroot%\minidump қалтасында сақталады. Дамп файлын талдау үшін бағдарламаны пайдалануды ұсынамын WinDBG(Microsoft ядросының жөндеу құралы).

Windows жүйесінде WinDBG орнату

Утилита WinDBGенгізілген» Windows 10 SDK(Windows 10 SDK). .

Файл шақырылады winsdksetup.exe, өлшемі 1,3 МБ.

Орнатуды іске қосыңыз және нақты не істегіңіз келетінін таңдаңыз - буманы осы компьютерге орнатыңыз немесе басқа компьютерлерге орнату үшін жүктеп алыңыз. Пакетті жергілікті компьютерге орнатайық.

Бүкіл буманы орнатуға болады, бірақ тек жөндеу құралын орнату үшін таңдаңыз Windows жүйесіне арналған жөндеу құралдары.

Орнатқаннан кейін WinDBG таңбашаларын бастау мәзірінен табуға болады.

.dmp файлдарының WinDBG-мен байланысын орнату

Дамп файлдарын ашу үшін қарапайым басу арқылы, .dmp кеңейтімін WinDBG қызметтік бағдарламасына салыстырыңыз.

  1. Ашық пәрмен жолыәкімші ретінде және 64 биттік жүйе үшін пәрмендерді іске қосыңыз: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe – IA
    32 биттік жүйе үшін:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe – IA
  2. Нәтижесінде, файл түрлері: .DMP, .HDMP, .MDMP, .KDMP, .WEW WinDBG-ге салыстырылады.

WinDBG жүйесінде отладка символы серверін орнату

Түзету таңбалары (отладка символдары немесе символдық файлдар) орындалатын файлмен бірге бағдарламаны құрастыру кезінде жасалған деректер блоктары болып табылады. Мұндай деректер блоктарында функциялар, кітапханалар және т.б деп аталатын айнымалы атаулар туралы ақпарат болады. Бұл деректер бағдарламаны орындау кезінде қажет емес, бірақ оны жөндеу кезінде пайдалы. Microsoft компоненттері Microsoft Symbol Server арқылы таратылатын таңбалармен құрастырылған.

WinDBG конфигурациялау Microsoft пайдалануСимвол сервері:

  • WinDBG ашыңыз;
  • Мәзірге өтіңіз Файл –> Символ файлының жолы;
  • Microsoft веб-сайтынан жөндеу таңбаларын жүктеп алуға арналған URL мекенжайын және кэшті сақтауға арналған қалтаны қамтитын жолды жазыңыз: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Мысалда кэш жүктелген. E:\Sym_WinDBG қалтасына кез келгенін көрсетуге болады.
  • Мәзірге өзгертулерді сақтауды ұмытпаңыз Файл–>Жұмыс кеңістігін сақтау;

WinDBG жергілікті қалтадағы таңбаларды іздейді және одан қажетті таңбаларды таппаса, көрсетілген сайттан таңбаларды автоматты түрде жүктеп алады. Егер сіз өзіңіздің таңбалар қалтаңызды қосқыңыз келсе, мұны келесідей орындауға болады:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

Интернет қосылымы болмаса, алдымен Windows символдық пакеттері ресурсынан таңбалар бумасын жүктеп алыңыз.

WinDBG жүйесіндегі апаттық демптің талдауы

WinDBG отладчик демп файлын ашады және жергілікті қалтадан немесе Интернеттен жөндеуге қажетті таңбаларды жүктеп алады. Бұл процесс барысында WinDBG пайдалана алмайсыз. Терезенің төменгі жағында (отладчик пәрмен жолында) хабарлама пайда болады Түзету құралы қосылмаған.

Командалар терезенің төменгі жағында орналасқан пәрмен жолына енгізіледі.

Назар аударатын ең маңызды нәрсе - қате коды, ол әрқашан он алтылық жүйеде көрсетіледі және пішіні бар 0xXXXXXXXXX(опциялардың бірінде көрсетілген - STOP: , 07/02/2019 0008F, 0x8F). Біздің мысалда қате коды 0x139.

Түзеткіш!analyze -v пәрменін орындауды ұсынады, тінтуірді сілтеменің үстіне апарып, шертіңіз. Бұл пәрмен не үшін?

  • Ол жад демпінің алдын ала талдауын жүзеге асырады және қамтамасыз етеді егжей-тегжейлі ақпаратталдауды бастау.
  • Бұл пәрмен STOP кодын және қатенің символдық атауын көрсетеді.
  • Ол апатқа әкелген пәрмен шақыруларының дестесін көрсетеді.
  • Сонымен қатар, мұнда IP мекенжайы, процесс және тіркеу ақаулары көрсетіледі.
  • Команда мәселені шешу үшін дайын ұсыныстар бере алады.

Пәрменін орындағаннан кейін талдау кезінде назар аудару керек негізгі нүктелер!analyze –v (тізім толық емес).

1: kd> !analyze -v


* *
* Қателерді тексеру *
* *
*****************************************************************************
STOP қатесінің символдық атауы (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Қате сипаттамасы (Ядро құрамдас бөлігі маңызды деректер құрылымын бүлдірді. Бұл бүліну шабуылдаушыға осы құрылғыны басқаруға мүмкіндік беруі мүмкін):

Ядро құрамдас бөлігі маңызды деректер құрылымын бүлдірді. Сыбайластық зиянды пайдаланушыға осы құрылғыны басқаруға мүмкіндік беруі мүмкін.
Қате аргументтері:

Аргументтер:
Arg1: 000000000000003, LIST_ENTRY бүлінген (яғни, екі рет жою).
Arg2: ffffd0003a20d5d0, қатені тексеруді тудырған ерекше жағдайға арналған қақпақ жақтауының мекенжайы
Arg3: ffffd0003a20d528, қатені тексеруді тудырған ерекше жағдайға арналған ерекшелік жазбасының мекенжайы
Arg4: 0000000000000000, Сақталған
Түзету мәліметтері:
------------------

Есептегіш жүйенің ұқсас қатемен қанша рет бұзылғанын көрсетеді:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Қысқартылған пішімдегі STOP қате коды:

BUGCHECK_STR: 0x139

Сәтсіздік орын алған процесс (қатенің себебі болуы міндетті емес, дәл сәтсіздік кезінде бұл процесс жадта жұмыс істеп тұрған):

PROCESS_NAME: sqlservr.exe

Қате коды Сипаттама: Жүйе осы қолданбада стек буферінің толып кетуін анықтады, ол шабуылдаушыға осы қолданбаны басқаруға мүмкіндік береді.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Жүйе осы қолданбада стекке негізделген буфердің асып кетуін анықтады. Бұл асып кету зиянды пайдаланушыға осы қолданбаны басқаруға мүмкіндік беруі мүмкін.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Жүйе осы қолданбада стекке негізделген буфердің асып кетуін анықтады. Бұл асып кету зиянды пайдаланушыға осы қолданбаны басқаруға мүмкіндік беруі мүмкін.

Стектегі соңғы қоңырау:

LAST_CONTROL_TRANSFER: fffff8040117d6a9 бастап fffff8040116b0a0 дейін

Сәтсіздік кезіндегі қоңыраулар стегі:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20dcke!Ex:BuCheck
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!Kickis+
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 0000000000Fis! d 0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9iise:Security!
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951:nt! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34nt9d8 ffffe001`0a34nt6000:Ta34ntc60ynop!
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380tW69te!
FFFFD000`3A20DA90 0007FFB`475307DA: 00000000000000000000000000000000000000: 0000000000000: NT! KisystemServiceCopyend + 0 x13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 000000000`0000000007ff:07b 307да

Қате орын алған код бөлімі:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 мов байт ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: MachineOwner

Ядро нысандары кестесіндегі модуль атауы. Егер анализатор анықтай алса проблемалық драйвер, аты MODULE_NAME және IMAGE_NAME өрістерінде көрсетіледі:

MODULE_NAME:nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Толық модульдер тізімін шолу
Жүктелген символдық кескін файлы: ntkrnlmp.exe
Жад суретінің салыстырылған файлы: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Кескін жолы: ntkrnlmp.exe
Кескін атауы: ntkrnlmp.exe
Ішкі атау: ntkrnlmp.exe
Түпнұсқа файл аты: ntkrnlmp.exe
Өнім нұсқасы: 6.3.9600.18946
Файл нұсқасы: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Келтірілген мысалда талдау ntkrnlmp.exe ядро ​​файлын көрсетті. Жад қалдықтарын талдау жүйелік драйверді (мысалы, win32k.sys) немесе ядро ​​файлын (біздің мысалдағы ntkrnlmp.exe) көрсеткенде, бұл ең алдымен бұл файлмәселенің себебі емес. Көбінесе мәселе құрылғы драйверінде болады, BIOS параметрлерінемесе жабдықтың дұрыс жұмыс істемеуі.

BSOD үшінші тарап драйверінен туындағанын көрсеңіз, оның атауы MODULE_NAME және IMAGE_NAME мәндерінде көрсетіледі.

Мысалы:

Кескін жолы: \SystemRoot\system32\drivers\cmudaxp.sys
Кескін атауы: cmudaxp.sys

Драйвер файлының қасиеттерін ашып, оның нұсқасын тексеріңіз. Көбінесе драйверлерге қатысты мәселе оларды жаңарту арқылы шешіледі.

2010 жылғы 22 маусымда

Бұрын Windbg жүктеп алу үшін бөлек қол жетімді болды. Бірақ соңғы нұсқалар үшін Microsoft оны Windows SDK бөлігі ретінде сақтайды. Төмендегі жүктеу сілтемелерін табыңыз.

Windows 10

Windows 7 жүйесіне арналған Windbg бағдарламасының соңғы нұсқасын https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk сілтемесінен жүктеп алуға болады.

Windows 7

Жоғарыдағы сілтемелерден орнатушыларды жүктеп алыңыз. Бұл бүкіл SDK жүктеп алмайтынын, бұл жай орнатушы екенін ескеріңіз. Файлды іске қосқаннан кейін, сен істе аласыңжүктеп алғыңыз келетін құралдарды таңдаңыз. Егер сізді тек Windbg қызықтырса, қалғандарының барлығын алып тастай аласыз және тек «Жалпы утилиталар» астындағы «Оқшаулау құралдарын» таңдай аласыз.

Жоғарыдағы бума windbg 6.12 нұсқасын орнатады. Windbg бағдарламасын жылдам орнатқыңыз келсе, мына жерден жүктеп алуға болатын ескі нұсқаға (6.11) өтуіңізге болады.
осы посттың соңында берілген сілтеме.

Орнатуды орындағаннан кейін бағдарламаны Бастау мәзірі -> Барлық бағдарламалар -> Windows жүйесіне арналған жөндеу құралдары -> Windbg ішінен таба аласыз.

WinDBG - 1 бөліммен таныстыру

Александр Антипов

WinDBG тамаша отладчик болып табылады. Оның пайдаланушыға өте ыңғайлы интерфейсі болмауы мүмкін және әдепкі бойынша қара фон болмауы мүмкін, бірақ ол қазіргі уақытта Windows ОЖ жүйесіндегі ең қуатты және тұрақты отладчиктердің бірі болып табылады. Бұл мақалада мен сізді WinDBG негіздерімен таныстырамын, сонда сіз онымен жұмыс істей аласыз.


WinDBG тамаша отладчик болып табылады. Оның пайдаланушыға өте ыңғайлы интерфейсі болмауы мүмкін және әдепкі бойынша қара фон болмауы мүмкін, бірақ ол қазіргі уақытта Windows ОЖ жүйесіндегі ең қуатты және тұрақты отладчиктердің бірі болып табылады. Бұл мақалада мен сізді WinDBG негіздерімен таныстырамын, сонда сіз онымен жұмыс істей аласыз.

Бұл WinDBG-ге арналған сериядағы бірінші мақала. Осы топтамаға енгізілген барлық мақалалардың тізімі:

  • 1-бөлім – орнату, интерфейс, символдар, қашықтан/жергілікті жөндеу, анықтамалық жүйе, модульдер, регистрлер.
  • 2-бөлім – тоқтау нүктелері.
  • 3-бөлім – жадты тексеру, бағдарламаны қадамдық жөндеу, кеңестер мен амалдар.

Бұл мақалада процесті орнатуды және қосуды қарастырамыз, ал келесі мақалаларда тоқтау нүктелерін, қадамдық жөндеу және жадты тексеруді қарастырамыз.

WinDBG орнатылуда

Windows 7-мен салыстырғанда, Windows 8 жүйесіндегі WinDBG орнату процесі шамалы өзгерістерге ұшырады. Бұл бөлімде біз екеуіне де отладчик орнатуды қарастырамыз операциялық жүйелер.

Windows 8 жүйесінде WinDBG орнату

Windows 8 жүйесінде WinDBG Windows драйвер жинағына (WDK) кіреді. Visual Studio және WDK орнатуға немесе Windows 8.1 жүйесіне арналған Debugging Tools бумасын бөлек орнатуға болады, оған WinDBG кіреді.

Орнатушы WinDBG-ді жергілікті түрде орнатқыңыз келе ме, әлде басқа компьютерге арналған бүкіл әзірлеу бумасын жүктеп алғыңыз келе ме деп сұрайды. Соңғысы негізінен эквивалент болып табылады желіден тыс орнатушы, бұл пакетті болашақта басқа жүйелерге орнатқыңыз келсе өте ыңғайлы.

1-сурет: Орнату түрін таңдау

Келесі терезеде «Windows жүйесіне арналған жөндеу құралдарынан» басқа барлық элементтерден құсбелгіні алып тастау керек және «Жүктеу» түймесін басыңыз.

Орнатушы жұмысын аяқтағаннан кейін бума жүктелген каталогқа өтіңіз (әдепкі бойынша ол c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) және орнату процедурасынан өтіңіз.

Windows 7 және одан бұрынғы нұсқаларда WinDBG орнату

Windows 7 және одан бұрынғы нұсқалары үшін WinDBG Windows SDK және .Net Framework құрамына кіретін "Windows жүйесіне арналған жөндеу құралдары" бумасының бөлігі болып табылады. Орнатушыны жүктеп алуыңыз қажет, содан кейін орнату процесі кезінде «Windows жүйесіне арналған жөндеу құралдарын» таңдаңыз.

Орнату кезінде болашақ орнатуларды жеңілдету үшін оқшау орнатушыны жасау үшін «Қайта таралатын пакеттер» астындағы «Оқшаулау құралдары» опциясын таңдаймын.

2-сурет: Оқшау орнатушыны жасау үшін орнату опцияларын таңдау

Орнату аяқталғаннан кейін әртүрлі платформаларға арналған WinDBG орнатушылары болуы керек (c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\ каталогында).

3-сурет: Түрлі платформаларға арналған WinDBG орнатушылары бар қалта

WinDBG интерфейсі

4-сурет: WinDBG көрінісі

Бірінші рет көріп тұрсың сыртқы түрі WinDGB, сіз отладчиктің өте қарапайым екенін түсінесіз. Көптеген WinDBG функциялары процесті жөндеу кезінде үйренеді. Интерфейсті сипаттауға уақыт жұмсаудың орнына, келесі бөлімдерде біз ең маңызды сәттерді ғана қарастырамыз.

Түзеткіш интерфейсі туралы білуіңіз керек ең негізгі нәрсе - екі аймақтан тұратын пәрмен терезесі. Бірінші аймақ: команданың орындалу нәтижесі көрсетілетін терезе. Екінші аймақ: командаларды енгізуге арналған шағын мәтіндік өріс.

5-сурет: WinDBG пәрмен терезесі

Рәміздер

Көп жағдайда WinDBG арнайы параметрлерді қажет етпейді және қораптан тыс дұрыс жұмыс істейді. Бірақ конфигурациялауды қажет ететін маңызды нәрсе - кейіпкерлер. Таңбалар – бағдарлама құрастырылған кезде орындалатын файлмен бірге генерацияланатын және жөндеу туралы ақпаратты (функциялар мен айнымалы атаулары) қамтитын файлдар. Түзету туралы ақпарат түзету немесе бөлшектеу кезінде қолданбаның функционалдығын тексеруге мүмкіндік береді. Көптеген Microsoft компоненттері Microsoft Symbol Server арқылы таратылатын таңбалармен құрастырылған. Қалған орындалатын файлдарда бәрі соншалықты қызғылт емес - өте сирек түзету ақпараты бар файлдар қолданбаға қосылады. Көп жағдайда компаниялар мұндай ақпаратқа қол жеткізуді шектейді.

WinDBG бағдарламасын Microsoft Symbol Server пайдалану үшін конфигурациялау үшін File:Symbol File Path бөліміне өтіп, жолды SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols параметріне орнатыңыз. Әрине, жұлдызшалардың бөлгіш ретінде пайдаланылуы сәл оғаш. Microsoft Symbol Server орнатқаннан кейін таңбалар C:\Symbols қалтасына жүктеледі.

6-сурет: Microsoft Symbol серверін орнату

WinDBG қажет болғанда екілік файлдар үшін таңбаларды автоматты түрде жүктейді. Сондай-ақ, өзіңіздің таңбалар қалтаңызды қосуға болады, мысалы:

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

Түзету кезінде таңбаларды қосу

Түзету кезінде таңбаларды импорттау қажет болса, мұны .sympath арқылы орындауға болады (процесске қосылған кезде пәрмен терезесі пайда болады). Мысалы, c:\SomeOtherSymbolFolder қалтасын қосу үшін келесі пәрменді енгізіңіз:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Таңбаны іздеу жолы: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Кеңейтілген таңбаны іздеу жолы: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Жолдарды қосқаннан немесе өзгерткеннен кейін таңбаларды қайта жүктеген дұрыс:

0:025> .қайта жүктеңіз
Ағымдағы модульдерді қайта жүктеу
................................................................
...............................................

Жүктелген таңбаларды тексеру

Қай модульдерде таңбалар жүктелгенін көру үшін x*! командасын пайдалануға болады. WinDBG таңбаларды қажет болған жағдайда ғана жүктегенімен, x*! жүктеуге болатын белгілерді көрсетеді. ld * пәрмені арқылы таңбаларды жүктеуге мәжбүрлей аласыз (бұл біраз уақыт алуы мүмкін және Debug:Break тармағына өту арқылы процесті тоқтатуға болады).

Енді біз әрбір модуль үшін белгілерді көре аламыз.

8-сурет: Таңбалар тізімі

Жергілікті процесті жөндеу

Жергілікті процесті жөндеу кезінде сізде екі опция бар:

  1. Жұмыс істеп тұрған процеске қосылыңыз.
  2. WinDBG арқылы процесті бастаңыз.

Әрбір әдістің өзіндік артықшылықтары мен кемшіліктері бар. Мысалы, сіз бағдарламаны WinDBG арқылы іске қоссаңыз, қолданбаның бұзылуына әкелетін кейбір арнайы жөндеу опцияларына (мысалы, үйме жөндеу) қол жеткізе аласыз. Екінші жағынан, оларға отладчик тіркеген кезде істен шығатын бағдарламалар да бар. Кейбір қолданбалар (әсіресе зиянды бағдарлама) іске қосу кезінде жүйеде отладчиктің бар-жоғын тексереді және, тиісінше, бұл жағдайда қазірдің өзінде жұмыс істеп тұрған процеске жабысу мағынасы бар. Кейде сіз іске қосу кезінде кейбір параметрлерді орнататын Windows қызметін түзетіп жатырсыз, сондықтан жөндеу процесін жеңілдету үшін қызметті отладчик арқылы іске қосқаннан гөрі, іске қосылған процеске қосылған дұрыс. Кейбір адамдар процесті отладчик арқылы іске қосу өнімділікке елеулі әсер етеді деп мәлімдейді. Бір сөзбен айтқанда, екеуін де байқап, өзіңізге қолайлысын таңдаңыз. Егер қандай да бір себептермен белгілі бір әдісті ұнатсаңыз, түсініктемелерде өз ойларыңызбен бөлісіңіз!

Процесті бастау

Жергілікті түрде жұмыс істейтін және желімен байланыспайтын оқшау қолданбаны жөндеуден өткізіп жатсаңыз, оны WinDBG арқылы іске қосқыңыз келуі мүмкін. Дегенмен, бұл сіз әлдеқашан жұмыс істеп тұрған процеске қосыла алмайсыз дегенді білдірмейді. Сізге ең қолайлы әдісті таңдаңыз.

Процесті бастау қиын емес. «Файл: Орындалатын файлды ашу» бөліміне өтіп, күйін түзеткіңіз келетін орындалатын файлды таңдаңыз. Сондай-ақ, аргументтерді көрсетуге немесе бастапқы каталогты орнатуға болады:

9-сурет: Таңдау орындалатын файлжөндеу үшін

Процесс байланысы

Жұмыс істеп тұрған процеске қосылу да қиын емес. Дегенмен, кейбір жағдайларда түзеткіңіз келетін нақты процесті табу үшін уақыт қажет болуы мүмкін екенін ескеріңіз. Мысалы, кейбір браузерлер әрбір қойынды үшін бір ата-аналық процесті, содан кейін тағы бірнеше процестерді жасайды. Осылайша, сіз түзетіп жатқан апаттық демпке байланысты негізгі процеске емес, қойындымен байланысты процеске қосылғыңыз келуі мүмкін.

Жұмыс істеп тұрған процеске тіркеу үшін «Файл: Процесске тіркеу» бөліміне өтіп, PID немесе процестің атын таңдаңыз. Процесске қосылу үшін тиісті құқықтарыңыз болуы керек екенін есте сақтаңыз.

10-сурет: Қосылатын процесті таңдау

Қосылғаннан кейін қолданба жұмысын кідіртсе, тиісті ұяшықты белгілеу арқылы «Негізсіз» режимін пайдалануға болады.

Қашықтағы процесті жөндеу

Кейде қашықтағы жүйеде процесті жөндеу қажет болуы мүмкін. Бұл мәселені пайдаланудың орнына жергілікті отладчик арқылы шешу әлдеқайда ыңғайлы болар еді виртуалды машинанемесе RDP. Немесе жүйе құлыпталған кезде ғана қол жетімді болатын LoginUI.exe процесін жөндеудесіз. Осындай жағдайларда сіз WinDBG жергілікті нұсқасын пайдалана аласыз және процестерге қашықтан қосыла аласыз. Бұл мәселелерді шешудің ең көп таралған екі жолы бар.

Бар отладка сеанстары

Бағдарламаны жергілікті түрде жөндеуді әлдеқашан бастаған болсаңыз (процесті WinDBG арқылы қосу немесе іске қосу арқылы), белгілі бір пәрменді енгізуге болады және WinDBG қашықтағы отладчик қосыла алатын «тыңдаушыны» іске қосады. Ол үшін .server пәрменін пайдаланыңыз:

Сервер tcp:port=5005

Жоғарыдағы пәрменді іске қосқаннан кейін сіз келесідей ескертуді көре аласыз:

11-сурет: Тыңдаушы жасау пәрменін іске қосқаннан кейін пайда болуы мүмкін ескерту хабары

Содан кейін WinDBG сервер жұмыс істеп тұрғанын хабарлайды:

0:005> .server tcp:port=5005
0: -қашықтағы tcp:Порт=5005,Сервер=ПАЙДАЛАНУШЫ-ДК

«Файл: Қашықтағы сеансқа қосылу» тармағына өтіп, мәтін өрісіне келесідей нәрсені енгізу арқылы қашықтағы хосттан бар жөндеу сеансына қосылуға болады: tcp:Port=5005,Сервер=192.168.127.138

12-сурет: Түзету сеансына қашықтан қосылу

Қосылғаннан кейін қашықтағы клиентте растау аласыз:


Сервер іске қосылды. Клиент осы пәрмен жолдарының кез келгенімен қосыла алады
0: -қашықтағы tcp:Порт=5005,Сервер=ПАЙДАЛАНУШЫ-ДК
MACHINENAME\User (tcp 192.168.127.138:13334) 2013 ж. 16 желтоқсан 09:03:03 дүйсенбіде қосылды

және отладчиктің жергілікті нұсқасындағы хабар:

MACHINENAME\User (tcp 192.168.127.138:13334) 2013 ж. 16 желтоқсан 09:03:03 дүйсенбіде қосылды

Қашықтағы серверді құру

Сондай-ақ WinDBG көмегімен бөлек сервер жасауға, оған қашықтан қосылуға және жөндеу үшін процесті таңдауға болады. Мұны сіз процестерді жөндеуді жоспарлаған dbgsrv.exe файлын пайдалану арқылы жасауға болады. Мұндай серверді іске қосу үшін келесі пәрменді орындаңыз:

dbgsrv.exe -t tcp:port=5005

13-сурет: қашықтағы серверді іске қосу

Тағы да, сіз қабылдау керек қауіпсіздік ескертуін алуыңыз мүмкін:

14-сурет: Іске қосу кезінде пайда болуы мүмкін қауіпсіздік хабары жөндеу сервері

Отладка серверіне File: Connect to Remote Stub тармағына өтіп, мәтін өрісіне келесі жолды енгізу арқылы қосылуға болады: tcp:Порт=5005,Сервер=192.168.127.138

15-сурет: Түзету серверіне қосылу

Қосылғаннан кейін сіз қосылған сигналдарды алмайсыз, бірақ «Файл: Процесске тіркеу» бөліміне өтсеңіз, жөндеу сервері процестерінің тізімін көресіз (dbgsrv.exe жұмыс істеп тұрған жерде). Енді сіз процеске жергілікті жерде істеп жатқандай қосыла аласыз.

Анықтама жүйесі

WinDBG-дегі анықтама жүйесі тамаша. Жаңа нәрсені үйренумен қатар, сіз пәрмен туралы негізгі ақпаратты ала алуыңыз керек. WinDBG анықтамасына қол жеткізу үшін .hh пәрменін пайдаланыңыз:

Сондай-ақ белгілі бір пәрмен үшін анықтама ақпаратын алуға болады. Мысалы, .reload пәрменімен анықтама алу үшін келесі пәрменді пайдаланыңыз:

windbg> .hh .қайта жүктеу

Немесе жай ғана Анықтама: Мазмұны бөліміне өтіңіз.

Модульдер

Бағдарлама жұмыс істеп тұрған кезде қолданбаның функционалдығын қамтамасыз ету үшін әртүрлі модульдер импортталады. Сондықтан, қолданба арқылы қандай модульдер импортталғанын білсеңіз, оның қалай жұмыс істейтінін жақсырақ түсінуге болады. Көптеген жағдайларда орындалатын файлдың өзі емес, бағдарлама жүктеген арнайы модульді жөндеуге болады.

Процесске қосылғаннан кейін WinDBG жүктелген модульдерді автоматты түрде көрсетеді. Мысалы, төменде calc.exe файлына қосылғаннан кейінгі модульдер берілген:

Microsoft (R) Windows Debugger 6.12.0002.633 X86 нұсқасы
Авторлық құқық (c) Microsoft корпорациясы. Барлық құқықтар сақталған.

*** күтудегі тіркемемен күтіңіз
Таңбаны іздеу жолы: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Орындалатын іздеу жолы:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Кейінірек жөндеу процесінде lmf пәрмені арқылы бұл тізімді қайта көрсетуге болады:

0:005>лмф
басталатын соңғы модуль атауы
00a70000 00b30000 calc C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 НҰСҚА C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000 LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Сондай-ақ, «lmf m» пәрмені арқылы белгілі бір модуль үшін жүктеу мекенжайын білуге ​​болады:

0:005> lmf m ядро32
басталатын соңғы модуль атауы
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Сондай-ақ!dh кеңейтімін пайдаланып белгілі бір модульдің сурет тақырыбы туралы ақпаратты алуға болады ( леп белгісікеңейтімді көрсетеді):

0:005> !dh ядро32

Файл түрі: DLL
ФАЙЛ ТАҚЫРЫБЫНЫҢ МӘНДЕРІ
14C машинасы (i386)
4 бөлім саны
4A5BDAAD уақыт күні белгісі дүйсенбі 13 шілде 21:09:01 2009 ж.

0 файл көрсеткіші символдар кестесіне
0 символдар саны
Қосымша тақырыптың E0 өлшемі
2102 сипаттамалары
Орындалатын
32 биттік сөздік машина
DLL

ҚОСЫМША ТАҚЫРЫП МӘНДЕРІ
10В сиқырлы #
9.00 сілтеме нұсқасы
C4600 код өлшемі
Бапталған деректердің C800 өлшемі
0 инициализацияланбаған деректер өлшемі
510C5 кіру нүктесінің мекенжайы
1000 негізгі код
----- жаңа -----
77550000 сурет базасы
1000 бөлімді туралау
200 файлды туралау
3 ішкі жүйе (Windows CUI)
6.01 операциялық жүйе нұсқасы
6.01 сурет нұсқасы
6.01 ішкі жүйе нұсқасы
D4000 кескін өлшемі
800 тақырып өлшемі
D5597 бақылау сомасы
00040000 стек қорының өлшемі
00001000 стекке міндеттеме өлшемі
00100000 үйме қорының мөлшері
00001000 үйменің өлшемі
140 DLL сипаттамалары
Динамикалық негіз
NX үйлесімді
B4DA8 [ A915] Экспорт каталогының мекенжайы
BF6C0 [ 1F4] импорт каталогының мекенжайы
Ресурстар каталогының C7000 [520] мекенжайы
Ерекшелік каталогының 0 [ 0] мекенжайы
Қауіпсіздік каталогының 0 [ 0] мекенжайы
Негізгі көшіру каталогының C8000 [B098] мекенжайы
C5460 [ 38] жөндеу каталогының мекенжайы
0 [ 0] Сипаттама каталогының мекенжайы
0 [ 0] арнайы каталогтың мекенжайы
0 [ 0] Thread Storage Directory мекенжайы
816B8 [ 40] Жүктеу конфигурация каталогының мекенжайы
278 [408] байланыстырылған импорт каталогының мекенжайы
1000 [DE8] импорттық мекенжайлар кестесі каталогының мекенжайы
0 [ 0] кешіктірілген импорт каталогының мекенжайы
0 [ 0] COR20 тақырып каталогының мекенжайы
Сақталған каталогтың 0 [ 0] мекенжайы

№1 БӨЛІМ ТАҚЫРЫБЫ
.мәтін атауы
C44C1 виртуалды өлшемі
1000 виртуалды мекенжай
C4600 бастапқы деректер өлшемі
Шикі деректерге арналған 800 файл көрсеткіші

0 қоныс аудару саны
0 жол нөмірлерінің саны
60000020 жалау
Код
(туралау көрсетілмеген)
Оқуды орындаңыз

Түзету каталогтары(2)
Түр өлшемі мекенжай көрсеткіші
cv 25 c549c c4c9c пішімі: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

№2 БӨЛІМ ТАҚЫРЫБЫ
.деректер атауы
FEC виртуалды өлшемі
C6000 виртуалды мекенжайы
E00 бастапқы деректердің өлшемі
C4E00 бастапқы деректерге арналған файл көрсеткіші
0 файл көрсеткішін жылжыту кестесіне
Жол нөмірлеріне 0 файл көрсеткіші
0 қоныс аудару саны
0 жол нөмірлерінің саны
C0000040 жалаушалары
Initialized Data
(туралау көрсетілмеген)
Оқу Жазу

№3 БӨЛІМ ТАҚЫРЫБЫ
.rsrc атауы
520 виртуалды өлшем
C7000 виртуалды мекенжайы
600 бастапқы деректер өлшемі
C5C00 бастапқы деректерге арналған файл көрсеткіші
0 файл көрсеткішін жылжыту кестесіне
Жол нөмірлеріне 0 файл көрсеткіші
0 қоныс аудару саны
0 жол нөмірлерінің саны
40000040 жалау
Initialized Data
(туралау көрсетілмеген)
Тек оқу

№4 БӨЛІМ ТАҚЫРЫБЫ
.reloc атауы
B098 виртуалды өлшем
C8000 виртуалды мекенжайы
B200 бастапқы деректер өлшемі
C6200 бастапқы деректерге арналған файл көрсеткіші
0 файл көрсеткішін жылжыту кестесіне
Жол нөмірлеріне 0 файл көрсеткіші
0 қоныс аудару саны
0 жол нөмірлерінің саны
42000040 жалау
Initialized Data
Жоюға болады
(туралау көрсетілмеген)
Тек оқу

Хабарламалар және ерекшеліктер

Процесске қосылғаннан кейін алдымен модульдер тізімі көрсетіледі, содан кейін басқа хабарламалар пайда болуы мүмкін. Мысалы, calc.exe файлына қосылған кезде, WinDBG тоқтау нүктесін автоматты түрде орнатады (ол жай ғана қолданбаны тоқтату үшін қолданылатын маркер). Экранда үзіліс нүктесі туралы ақпарат көрсетіледі:

(da8.b44): Нұсқауды үзу - код 80000003 (бірінші мүмкіндік)

Бұл нақты хабар ерекшелік, атап айтқанда бірінші мүмкіндікті ерекшелік. Негізінде, ерекше жағдай - бұл бағдарламаны орындау кезінде пайда болатын ерекше жағдай. Бірінші мүмкіндік ерекшелік бағдарламаның ерекше жағдай орын алғаннан кейін бірден тоқтағанын білдіреді. Екінші мүмкіндік ерекшелік ерекше жағдай орын алғаннан кейін кейбір әрекеттер орындалады, содан кейін бағдарлама жұмысын тоқтатады.

Тіркеулер

Хабарламалар мен ерекше жағдайларды көрсеткеннен кейін отладчик процессор регистрлерінің күйін көрсетеді. Регистрлер - процессордың ішіндегі шағын ақпарат бөліктерін сақтайтын немесе жадтағы бір нәрсенің күйін бақылайтын арнайы айнымалылар. Процессор бұл регистрлердегі ақпаратты өте жылдам өңдей алады. Бұл жедел жадтан автобус арқылы ақпарат алудан әлдеқайда жылдамырақ.

calc.exe файлына қосылғаннан кейін WinDBG келесі регистрлер туралы ақпаратты автоматты түрде көрсетеді:

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

Бұл ақпаратты кейінірек r пәрмені арқылы қайталауға болады:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv жоғары ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint:
77663540 cc int 3

Егер біз белгілі бір регистрдің мәнін алғымыз келсе, келесі пәрменді орындауға болады:

0:005> r ақ
eax=7ffd9000

Ақпаратты бір уақытта бірнеше регистрлерден келесідей алуға болады:

0:005> r eax,ebp
eax=7ffd9000 ebp=02affdc8

Нұсқау үшін көрсеткіш

Соңғы пәрмен іске қосу нұсқаулары туралы. Мұнда EIP регистрінде не бар r пәрменіндегідей ақпарат экранда да көрсетіледі. EIP – процессормен орындалатын келесі нұсқаудың орнын қамтитын регистр. WinDBG көрсететін нәрсе u eip L1 пәрменінің баламасы болып табылады, одан кейін WinDBG EIP регистрінде көрсетілген мекенжайға өтіп, осы бөлімді құрастыру кодына түрлендіреді және оны экранда көрсетеді.

ntdll!DbgBreakPoint:
77663540 cc int 3

байланыста бол

Болашақ мақалаларда біз WinDBG-ді өрісте қалай пайдалану керектігін қарастырамыз: тоқтау нүктелері, қадамдық жөндеу және жадты шолу. Ауыспаңыз! Дж.

Windows жүйесіне арналған жөндеу құралдары- Операциялық кодты жөндеу құралдары Windows жүйелері. Олар пайдаланушы режимі мен ядро ​​режимінің кодын жөндеуге арналған Microsoft корпорациясының еркін таратылатын бағдарламаларының жиынтығы: қолданбалар, драйверлер, қызметтер, ядро ​​модульдері. Құралдар жинағы консольді және GUI режимін жөндеушілерді, символдармен, файлдармен, процестермен жұмыс істеуге арналған утилиталарды және қашықтан жөндеуге арналған утилиталарды қамтиды. Құралдар жинағы әртүрлі жүйе құрамдас бөліктеріндегі ақаулардың себептерін табу үшін пайдаланылатын утилиталарды қамтиды. Windows жүйесіне арналған жөндеу құралдарыбелгілі бір сәттен бастап дербес тарату түрінде жүктеп алу мүмкін емес және Windows SDK (Windows бағдарламалық жасақтамасын әзірлеу жинағы) бөлігі болып табылады. Аспаптар жиынтығы Windows құралдары SDK өз кезегінде MSDN жазылым бағдарламасының бөлігі ретінде қол жетімді немесе msdn.microsoft.com сайтынан бөлек тарату ретінде еркін жүктеп алуға болады. Әзірлеушілердің айтуынша, ең соңғы және ең ағымдағы нұсқасы Windows жүйесіне арналған жөндеу құралдары арнайы Windows SDK ішінде қамтылған.

Windows жүйесіне арналған жөндеу құралдары жиі жаңартылып, жалпыға қол жетімді болады және бұл процесс операциялық жүйелердің шығарылымына ешқандай тәуелді емес. Сондықтан жаңа нұсқаларды мезгіл-мезгіл тексеріп отырыңыз.

Енді, атап айтқанда, Түзету құралдарының не үшін екенін көрейік Microsoft Windows:

  • Жергілікті қолданбаларды, қызметтерді, драйверлерді және ядроны жөндеу;
  • Желі арқылы қашықтағы қолданбаларды, қызметтерді, драйверлерді және ядроны жөндеу;
  • Нақты уақытта іске қосылған қолданбаларды жөндеу;
  • Қолданбалардың, ядроның және тұтастай жүйенің жад демп файлдарын талдау;
  • x86/x64/Itanium архитектурасына негізделген жүйелермен жұмыс істеу;
  • Пайдаланушы режимі мен ядро ​​режимінің бағдарламаларын жөндеу;

Windows жүйесіне арналған Debugging Tools бағдарламасының келесі нұсқалары қол жетімді: 32 биттік x86, Intel Itanium, 64 биттік x64. Бізге олардың екеуі қажет: x86 немесе x64.

Windows жүйесіне арналған жөндеу құралдарын орнатудың бірнеше жолы бар, осы мақалада біз тек негізгілерін қарастырамыз:

  • Веб-инсталлятор арқылы орнату.
  • ISO жүйесінен Windows жүйесіне арналған жөндеу құралдарын орнату Windows кескіні SDK.
  • Windows жүйесіне арналған жөндеу құралдарын dbg_amd64.msi / dbg_x86.msi бумаларынан тікелей орнату.

Неліктен компьютерде жөндеу құралдарын орнату керек екені белгісіз. Сіз жиі жұмыс ортасына араласу өте қажет емес жағдайға тап боласыз! Сонымен қатар, жаңа өнімді орнату, яғни тізілім/жүйелік файлдарға өзгертулер енгізу мүлдем қолайсыз болуы мүмкін. Мысалдар миссия үшін маңызды серверлерді қамтиды. Неліктен әзірлеушілер орнатуды қажет етпейтін қосымшалардың портативті нұсқаларының опциясын қарастырмайды?
Нұсқадан нұсқаға дейін Windows жүйесіне арналған Debugging Tools бумасын орнату процесі кейбір өзгерістерге ұшырайды. Енді орнату процесіне тікелей көшіп, құралдар жинағын орнату жолдарын қарастырайық.

Веб-орнатушы арқылы Windows жүйесіне арналған жөндеу құралдарын орнату

Windows SDK архиві бетіне өтіп, Windows 10 деп аталатын бөлімді және «Windows 10 SDK (10586) және Windows 10 Mobile (Microsoft) (10586.11 нұсқасы) бар құрылғы эмуляторы» тармағының астынан табыңыз.

Элементті басыңыз SDK ОРНАТУ. Басқаннан кейін Windows SDK онлайн орнату процесін бастайтын sdksetup.exe файлын жүктеп алып, іске қосыңыз. Бастапқы кезеңде орнатушы жүйеде .NET Framework бумасының орнатылғанын тексереді соңғы нұсқасыосы сәтбұл 4,5). Пакет жоқ болса, орнату ұсынылады және аяқталғаннан кейін станция қайта жүктеледі. Қайта жүктегеннен кейін бірден пайдаланушы авторизациясы сатысында Windows SDK орнату процесі басталады.

Көбінесе буманың барлық құрамдастарын ерекшеліксіз таңдағанда, орнату процесінде қателер орын алуы мүмкін. Бұл жағдайда құрамдастарды таңдаулы түрде орнату ұсынылады, ең аз талап етілетін жиынтық.

Windows жүйесіне арналған Debugging Tools орнату аяқталғаннан кейін, жөндеу файлдарының орны қашан бұл әдісБіздің орнатуымыз келесідей болады:

  • 64 биттік нұсқалары: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32 биттік нұсқалары: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* мұндағы x.x әзірлеу жинағының нақты нұсқасы;
Біз 8 және одан жоғары нұсқаларда орнату жолдары барлығына арналған классикалық жолдардан айтарлықтай ерекшеленетінін байқадық алдыңғы нұсқаларТүзету құралдары?

Үлкен плюс бұл әдіс Windows жүйесіне арналған жөндеу құралдарын орнату бір уақытта барлық архитектуралар үшін жөндеу құралдарының нұсқаларын орнатуды қамтиды.

Windows SDK ISO жүйесінен Windows жүйесіне арналған жөндеу құралдарын орнату

Бұл әдіс толық Windows SDK (бағдарламалық құрал әзірлеушілер жинағы) орнату кескінін пайдаланып Windows жүйесіне арналған жөндеу құралдарын орнатуды қамтиды. Белгілі бір уақытқа дейін жүктеп алыңыз ISO кескінісәйкес жүйе үшін Windows SDK мұрағат бетінде мүмкін болды. Дегенмен, қазіргі уақытта SDK ISO кескінін sdksetup.exe веб-орнатқышын іске қосып, таңдау арқылы алуға болады. Windows бағдарламалық жасақтамасын әзірлеу жинағын жүктеп алыңызорнатушыны бастау терезесінде:

Біз анықтағандай, веб-орнатқышты пайдаланатын алдыңғы орнату әдісі өте күрделі және жиі қателікпен аяқталады. Таза жүйелерде ол қиындықсыз орнатылады, бірақ жеткілікті жүктелген жүйелерде көптеген мәселелер туындайды. Егер бұл сіздің жағдайыңыз болса, онда осы әдісті қолданыңыз.

Тиісінше, бетте қажетті дистрибуцияны таңдау керек, мен үшін (және менің ойымша, көп адамдар үшін) қазіргі уақытта бұл «Windows 7 және .NET Framework 4 үшін Windows SDK» және төменде «ISO алу» сілтемесін басыңыз. DVD кескіні».

msdn.microsoft.com сайтымен жұмыс істегенде браузерді пайдалануды ұсынамын Internet Explorer, өйткені бәсекелес өнімдердің жұмыс істемеуі жағдайлары болды!

Тиісінше, тек қажеттілікке қарай таңдау керек. Әдетте Windows жүйесіне арналған Debugging Tools биттік деңгейі жүйенің биттік деңгейіне сәйкес келеді. Менің жүйелерім негізінен 64 биттік, сондықтан көп жағдайда GRMSDKX_EN_DVD.iso 64 биттік жүйе үшін кескінді жүктеп аламын.
Содан кейін кескінді жүктеп алғаннан кейін біз қандай да бір түрде бар ISO кескінімен жұмыс істеуіміз керек. Дәстүрлі әдіс, әрине, ықшам дискіні жазу, бірақ бұл өте ұзақ және кейде қымбат әдіс. Жүйеде виртуалды диск құрылғыларын жасау үшін тегін утилиталарды пайдалануды ұсынамын. Жеке өзім осы мақсат үшін DEAMON Tools Lite қолданбасын пайдаланғым келеді. Біреудің дәмі мен түсіне байланысты басқа қалаулары, тікелей немесе жеңіл утилиталары болуы мүмкін, олар айтқандай .. DAEMON Tools Lite орнатқаннан кейін, мен GRMSDKX_EN_DVD.iso кескін файлын екі рет шертемін және жүйеде жаңа виртуалды файл пайда болады. CD:

Содан кейін, екі рет басу арқылы мен автоматты жүктеуді іске қосамын және Windows SDK орнатуды бастаймын:

Тізімнен орнату үшін құрамдастарды таңдау уақыты келгенде, скриншотта белгіленгендерден басқа барлық опцияларды мүлдем өшіреміз. Бұл қазір қажетсіз қателерден аулақ болуға көмектеседі.


Барлығы дәл солай, скриншотта екі опция белгіленген: «Windows өнімділігі құралдар жинағы» және «Windows жүйесіне арналған жөндеу құралдары». Екеуін де таңдаңыз, өйткені Windows Performance Toolkit сіздің жұмысыңызға пайдалы болады! Содан кейін «Келесі» түймесін басқаннан кейін орнату әдеттегідей жалғасады. Соңында сіз «Орнату аяқталды» деген жазуды көресіз.
Орнату аяқталғаннан кейін Windows жүйесіне арналған Debugging Tools бумасының жұмыс каталогтары келесідей болады:

  • x86 нұсқасы үшін:
  • x64 нұсқасы үшін:

Осы кезде Windows жүйесіне арналған жөндеу құралдарын орнату аяқталды деп санауға болады.

.msi файлы арқылы Windows жүйесіне арналған жөндеу құралдарын орнату

Егер алдыңғы екі әдісті қолдана отырып, Windows жүйесіне арналған жөндеу құралдарын орнату кезінде проблемалар туындаса, бізде тағы біреуі бар, ең сенімді және уақыт тексерілген, ол құтқаруға келді, былайша айтқанда, бірнеше рет. Бір кездері, Windows SDK-ге интеграцияланбас бұрын, Windows жүйесіне арналған жөндеу құралдары бөлек installer.msi ретінде қол жетімді болды, оны әлі де табуға болады, бірақ қазірдің өзінде Windows SDK дистрибутивінде бар. Қолымызда Windows SDK ISO кескіні бар болғандықтан, біз оны жүйеге қоса алмаймыз, бірақ оны бұрыннан белгілі WinRAR мұрағатшысы немесе ISO дискілерінің мазмұнымен жұмыс істейтін кез келген басқа өнім арқылы ашамыз.

Кескінді ашқаннан кейін біз түбірде орналасқан «Орнату» каталогына өтіп, каталогтардың бірін таңдауымыз керек:

  • 64 биттік нұсқаны орнату үшін: \Setup\WinSDKDebuggingTools_amd64және dbg_amd64.msi файлын осы каталогтан шығарыңыз.
  • 32-биттік нұсқаны орнату үшін: \Setup\WinSDKDebuggingTools және dbg_x86.msi файлын осы каталогтан шығарыңыз.

Орнату аяқталғаннан кейін Windows жүйесіне арналған Debugging Tools бумасының жұмыс каталогтары келесідей болады:

  • x86 нұсқасы үшін: C:\Program Files (x86)\Windows жүйесіне арналған жөндеу құралдары (x86)
  • x64 нұсқасы үшін: Windows жүйесіне арналған C:\Program Files\Debugging Tools (x64)

Осы кезде Windows жүйесіне арналған жөндеу құралдарын орнату аяқталды деп санауға болады.

қосымша ақпарат

Мен мұның немен байланысты екенін білмеймін, мүмкін менің ұқыпсыздығымнан болуы мүмкін, бірақ Windows жүйесіне арналған жөндеу құралдарын орнатқаннан кейін орнатушы жүйе жолының айнымалы жолында жөндеуші бар каталогқа жолды орнатпайды. Бұл әртүрлі жөндеу тапсырмаларын тікелей консольден іске қосуға белгілі шектеулер қояды. Сондықтан, егер жол болмаса, мен терезеге өз бетіммен жазамын Қоршаған ортаның айнымалылары жөндеу құралдарының жолы:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* Сіздің жағдайыңызда жолдар басқа бит өлшеміндегі ОЖ пайдалануына байланысты да, басқа SDK нұсқасын пайдалануына байланысты да әртүрлі болуы мүмкін.

Windows жүйесіне арналған Debugging Tools бумасының утилиталары портативті қолданбалар ретінде жұмыс істей алады, сізге каталогты жұмыс жүйесінен көшіру жеткілікті. Microsoft Windows өнімділігі құралдары жинағыжәне оны өндіріс серверінде портативті нұсқа ретінде пайдаланыңыз. Бірақ жүйенің сыйымдылығын ескеруді ұмытпаңыз !! Критикалық жүйеде пакетті толық орнатуды аяқтасаңыз да, орнатудан кейін бірден жұмыс істей бастай аласыз, қайта жүктеу қажет емес.

Windows жүйесіне арналған жөндеу құралдарының құрамы

Енді, ең соңында, Windows жүйесіне арналған жөндеу құралдарының құрамы:

Файл Мақсат
adplus.doc ADPlus қызметтік бағдарламасына арналған құжаттама.
adplus.exe Бір немесе бірнеше процестер үшін демптер мен журнал файлдарын жасау үшін cdb отладчик жұмысын автоматтандыратын консоль қолданбасы.
agestore.exe Символ сервері немесе бастапқы сервер пайдаланатын жадтан ескірген файлдарды жоюға арналған қызметтік бағдарлама.
breakin.exe CTRL+C пернелерін басу сияқты процестерге теңшелетін үзіліс комбинациясын жіберуге мүмкіндік беретін утилита.
cdb.exe Пайдаланушы режимінің консолін жөндеуші.
convertstore.exe Таңбаларды 2 деңгейліден 3 деңгейліге түрлендіруге арналған утилита.
dbengprx.exe Қашықтан жөндеуге арналған қайталағыш (прокси-сервер).
dbgrpc.exe RPC қоңырау күйі туралы ақпаратты көрсетуге арналған қызметтік бағдарлама.
dbgsrv.exe Қашықтан жөндеу үшін пайдаланылатын сервер процесі.
dbh.exe Символдық файлдың мазмұны туралы ақпаратты көрсетуге арналған қызметтік бағдарлама.
dumpchk.exe Дампты тексеру утилитасы. Дамп файлын жылдам тексеруге арналған утилита.
dumpexam.exe Жад демпін талдауға арналған утилита. Нәтиже %SystemRoot%\MEMORY.TXT ішіне шығарылады.
gflags.exe Жаһандық жүйе жалауларының редакторы. Утилита тізілім кілттерін және басқа параметрлерді басқарады.
i386kd.exe kd үшін қаптама. Бір кездері x86 машиналарына арналған Windows NT/2000 негізіндегі жүйелер үшін kd осылай аталды ма? Үйлесімділік себебінен қалдырылған болуы мүмкін.
ia64kd.exe kd үшін қаптама. Ол бір кездері ia64 машиналарына арналған Windows NT/2000 негізіндегі жүйелер үшін kd деп аталды ма? Үйлесімділік себебінен қалдырылған болуы мүмкін.
kd.exe Ядро режимінің консоль жөндеушісі.
kdbgctrl.exe Ядро жөндеуді басқару құралы. Ядро түзету қосылымын басқаруға және конфигурациялауға арналған утилита.
kdsrv.exe KD үшін қосылым сервері. Утилита қашықтағы қосылымдарды іске қосатын және күтетін шағын қолданба болып табылады. kd клиентте жұмыс істейді және қашықтан жөндеу үшін осы серверге қосылады. Сервер де, клиент те бір Түзету құралдары жинағынан болуы керек.
kill.exe Процестерді аяқтауға арналған утилита.
list.exe Экранда файлдың мазмұнын көрсетуге арналған қызметтік бағдарлама. Бұл миниатюралық қызметтік бағдарлама бір мақсатпен қамтылған - үлкен мәтінді немесе журнал файлдарын қарау. Ол жадта аз орын алады, себебі ол мәтінді бөліктерге бөледі.
logger.exe Тек бір процесспен жұмыс істей алатын миниатюралық отладчик. Утилита logexts.dll файлын процесс кеңістігіне енгізеді, ол барлық функционалдық шақыруларды және зерттелетін бағдарламаның басқа әрекеттерін жазады.
logviewer.exe logger.exe отладчик арқылы жазылған журналдарды көруге арналған қызметтік бағдарлама.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Іске қосылған кезде мәтіндік терезені жасайтынын қоспағанда, cdb-ге ұқсас отладчик. CDb сияқты, ntsd консольдік қолданбаларды да, графикалық қолданбаларды да жөндеуге қабілетті.
pdbcopy.exe Таңбалар файлынан жеке белгілерді жоюға арналған, символдар файлына енгізілген жалпыға ортақ белгілерді басқаруға арналған утилита.
remote.exe Кез келген консольдық отладчик KD, CDB және NTSD-ті қашықтан жөндеуге және қашықтан басқаруға арналған утилита. Барлық осы консоль жөндеушілерін қашықтан іске қосуға мүмкіндік береді.
rtlist.exe Тапсырманы қашықтан қарау құралы. Утилита DbgSrv сервер процесі арқылы іске қосылған процестердің тізімін көрсету үшін пайдаланылады.
symchk.exe Microsoft символдық серверінен таңбаларды жүктеп алуға және жергілікті таңба кэшін жасауға арналған қызметтік бағдарлама.
symstore.exe Желіні немесе жергілікті символдарды сақтауды (2 деңгейлі/3 деңгейлі) жасауға арналған утилита. Символды сақтау дискідегі мамандандырылған каталог, ол белгілі бір құрылымға сәйкес құрастырылған және символдардан тұрады. Символдардың түбірлік каталогында компоненттер атауларымен бірдей атаулары бар ішкі қалталардың құрылымы жасалады. Өз кезегінде, осы ішкі қалталардың әрқайсысында екілік файлдарды хэштеу арқылы алынған арнайы атаулары бар кірістірілген ішкі қалталар бар. Symstore утилитасы құрамдас қалталарды сканерлейді және таңбалар қоймасына жаңа құрамдастарды қосады, мұнда кез келген клиент оларды шығарып алады. Symstore 0-деңгейлі қоймадан таңбаларды алу және оларды 2-деңгейлі/3-деңгейлі қоймаға қою үшін пайдаланылады деп айтылады.
tlist.exe Тапсырманы қарау құралы. Барлық іске қосылған процестердің тізімін көрсетуге арналған утилита.
umdh.exe Пайдаланушы режимінің демп үйіндісінің қызметтік бағдарламасы. Таңдалған процестің үйінділерін талдауға арналған утилита. Үйменің әртүрлі параметрлерін көрсетуге мүмкіндік береді.
usbview.exe USB қарау құралы. Компьютерге қосылған USB құрылғыларын көруге арналған утилита.
vmdemux.exe Виртуалды машина демультиплексері. Бір COM қосылымы үшін бірнеше аталған құбырларды жасайды. Арналар әртүрлі виртуалды машина құрамдастарын жөндеу үшін пайдаланылады
windbg.exe GUI бар пайдаланушы режимі және ядро ​​режимін жөндеуші.

Себептерді анықтау көк экрандар(BSOD) жад демпінің талдауы қажет. Жағдайлардың басым көпшілігінде сыни қателер болған жағдайда жүйе жасайтын минидамп жеткілікті.
Бұл мақалада бар қадамдық нұсқаулық WinDBG орнату және конфигурациялау бойынша - BSOD-тің шынайы себебін анықтауға мүмкіндік беретін қуатты жөндеу құралы.

1-қадам - ​​Кіші жад қалдықтарын конфигурациялау

2-қадам - ​​WinDBG орнату

Жад қалдықтарын талдау үшін Windows SDK құрамына кіретін WinDBG отладкасын орнату қажет. Жазу кезінде соңғы қол жетімді Windows нұсқалары SDK:

  • Windows 10 SDK (желі орнатушысын жүктеп алу)
  • Windows 8.1 SDK (желі орнатушысын жүктеп алу)

3-қадам - ​​.dmp файлдарын WinDBG-ге салыстыру

Жад демптерін оқуды және талдауды жеңілдету үшін .dmp файлдарын WinDBG файлымен салыстырыңыз. Бұл Explorer-ден демп файлдарын оны іске қоспай-ақ тікелей WinDBG жүйесінде ашуға мүмкіндік береді.


4-қадам — Түзету символдық файлдарын қабылдау үшін символдық серверді орнату


WinDBG орнату және бастапқы конфигурациялау аяқталды. Оның сыртқы түрін өзгерту үшін мәзірге өтуге болады Көру- таңдау арқылы қаріп параметрлерін табасыз Қаріп, және консоль терезесінің параметрлері Опциялар.




Жоғарғы