Инсталирање и конфигурирање на WinDBG за анализа на отпадоци од меморијата. Алатки за дебагирање на Windows: дијагностицирање и поправање на BSOD алатки за дебагирање за употреба на Windows

Кога ќе се појави критичен дефект, оперативниот систем Виндоус паѓа и прикажува Син екран на смртта (BSOD). содржина меморија за случаен пристапи сите информации за грешката што се појавува се запишуваат во датотеката swap. Друг пат подигнување на Windowsе создаден пад на отпад со информации за дебагирање врз основа на зачуваните податоци. Се креира запис за критична грешка во дневникот за настани на системот.

Внимание!Ако потсистемот на дискот не успее или се појави критична грешка за време на почетната фаза на подигање на Windows, не се создава пад на отпад.

Видови на Windows Crash Dumps

Користејќи го тековниот оперативен систем Windows 10 како пример ( Виндоус сервер 2016) разгледајте ги главните типови на мемориски депонии што системот може да ги создаде:

  • Мини депонија за меморија(256 KB). Овој тип на датотека содржи минимална количина на информации. Ја содржи само пораката за грешка BSOD, информации за драјверите, процесите кои биле активни во моментот на падот и кој процес или нишка на јадрото го предизвикале падот.
  • Депонија за меморија на кернелот. Типично мала по големина - една третина од големината на физичката меморија. Депонијата за меморија на кернелот е подетална од мини депонијата. Содржи информации за двигателите и програмите во режим на јадро, вклучува меморија доделена на кернелот на Windows и слојот за апстракција на хардверот (HAL) и меморија доделена на драјвери и други програми во режим на јадро.
  • Комплетна депонија за меморија. Најголема по големина и бара меморија еднаква на RAM меморијата на вашиот систем плус 1MB што ги бара Windows за да ја создаде оваа датотека.
  • Автоматско отстранување на меморијата. Соодветствува на депонијата на меморијата на кернелот во однос на информациите. Единствената разлика е во тоа колку простор користи за да ја креира датотеката за отпадоци. Овој тип на датотека не постоеше во Windows 7. Додаден е во Windows 8.
  • Депонија на активна меморија. Овој тип ги елиминира елементите што не можат да ја утврдат причината за дефект на системот. Ова е додадено на Windows 10 и е особено корисно ако користите виртуелна машина или ако вашиот систем е хост Hyper-V.

Како да овозможите фрлање меморија во Windows?

Користејќи Win + Pause, отворете го прозорецот за системски поставки, изберете " Дополнителни опциисистеми„(Напредни системски поставки). Во " дополнително" (Напредно), делот "" (Стартување и обновување) кликнете на копчето " Опции"(Поставки). Во прозорецот што се отвора, конфигурирајте дејства што треба да се преземаат кога системот не успее. Проверете го " Пријавете ги настаните во системскиот дневник" (Напишете настан во системскиот дневник), изберете го типот на отпад што треба да се креира кога системот ќе се сруши. Ако во полето за избор " Заменете ја постоечката депонија„(Пребриши која било постоечка датотека) штиклирајте го полето, датотеката ќе се препишува секој пат кога ќе има дефект. Подобро е да го отштиклирате ова поле, тогаш ќе имате повеќе информации за анализа. Исто така оневозможи Автоматско рестартирање.

Во повеќето случаи, мала меморија ќе биде доволна за да се анализира причината за BSOD.

Сега, кога ќе се појави BSOD, можете да ја анализирате депонијата и да ја пронајдете причината за неуспехот. Мини депонијата е стандардно зачувана во папката %systemroot%\minidump. За да ја анализирате датотеката за депонија, препорачувам да ја користите програмата WinDBG(Дебагер на јадрото на Мајкрософт).

Инсталирање WinDBG на Windows

Алатка WinDBGвклучени во " Windows 10 SDK"(Windows 10 SDK). .

Датотеката се нарекува winsdksetup.exe, големина 1,3 MB.

Извршете ја инсталацијата и изберете што точно сакате да направите - инсталирајте го пакетот на овој компјутер или преземете го за инсталација на други компјутери. Ајде да го инсталираме пакетот на локалниот компјутер.

Можете да го инсталирате целиот пакет, но за да ја инсталирате само алатката за дебагирање, изберете Алатки за дебагирање за 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.

Конфигурирајте го WinDBG на Користење на MicrosoftСервер за симболи:

  • Отворете WinDBG;
  • Одете во менито Датотека –> Патека на датотеката со симболи;
  • Напишете линија што ја содржи URL-то за преземање симболи за отстранување грешки од веб-локацијата на Microsoft и папката за зачувување на кешот: 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 Symbol Packages.

Анализа на хаварија во WinDBG

Дебагерот WinDBG ја отвора датотеката за отпад и ги презема потребните симболи за отстранување грешки од локална папка или од Интернет. Не можете да користите WinDBG за време на овој процес. На дното на прозорецот (во командната линија за дебагер) се појавува пораката Debugee не е поврзан.

Командите се внесуваат во командната линија која се наоѓа на дното на прозорецот.

Најважното нешто на кое треба да се обрне внимание е кодот за грешка, кој секогаш е означен со хексадецимално и ја има формата 0xXXXXXXXXX(означено во една од опциите - СТОП: , 07/02/2019 0008F, 0x8F). Во нашиот пример, кодот за грешка е 0x139.

Дебагерот нуди да ја изврши командата! analyze -v, само поставете го глувчето над врската и кликнете. За што е оваа команда?

  • Врши прелиминарна анализа на меморијата и обезбедува детални информациида започне анализа.
  • Оваа команда ќе го прикаже STOP кодот и симболичното име на грешката.
  • Го прикажува купот командни повици што доведоа до падот.
  • Дополнително, тука се прикажани грешките на IP адресата, процесот и регистрацијата.
  • Тимот може да даде готови препораки за решавање на проблемот.

Главните точки на кои треба да обрнете внимание при анализата по извршувањето на командата! analyze –v (списокот е нецелосен).

1: kd> !анализирај -v


* *
* Анализа на проверка на грешки *
* *
*****************************************************************************
Симболично име на грешка СТОП (Проверка на грешки)
KERNEL_SECURITY_CHECK_FAILURE (139)
Опис на грешката (компонента на кернелот ја оштети критичната структура на податоци. Ова оштетување потенцијално може да му овозможи на напаѓачот да ја добие контролата врз оваа машина):

Компонента на јадрото ја оштети критичната структура на податоци. Корупцијата потенцијално би можела да му овозможи на злонамерниот корисник да добие контрола над оваа машина.
Аргументи за грешка:

Аргументи:
Arg1: 0000000000000003, LIST_ENTRY е оштетен (т.е. двојно отстранете).
Arg2: ffffd0003a20d5d0, Адреса на рамката за замка за исклучокот што ја предизвикал проверката на грешки
Arg3: ffffd0003a20d528, Адреса на записот за исклучок за исклучокот што ја предизвикал проверката на грешки
Арг4: 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`5KE2000`3a20.
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2KiBxpacktch!
fffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 000000000`000000000 0xd 0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006t 0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951! ?? ::FNODOBFM::`низа"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8S fffe001`0a:S34nt60:000000000000000000 9
ffffd000`3a20d990 fffff804`0117d313: фффффф`фффффе 00000000`00000000 00000000`000000000 000000eb`a0cf1380t!
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 000000000`000000000 00000:000000000000 0 x 13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`000000000 5 307да

Делот за код каде што се појави грешката:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: Сопственик на машина

Името на модулот во табелата со објекти на јадрото. Доколку анализаторот успеал да открие проблематичен возач, името е прикажано во полињата MODULE_NAME и IMAGE_NAME:

MODULE_NAME: не
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

Отворете ги својствата на датотеката на возачот и проверете ја неговата верзија. Во повеќето случаи, проблемот со драјверите се решава со нивно ажурирање.

на 22 јуни 2010 г

Претходно Windbg беше достапен посебно за преземање. Но, за најновите верзии, Microsoft го задржува како дел од Windows SDK. Ве молиме најдете ги линковите за преземање подолу.

Windows 10

Најновата верзија на Windbg за Windows 7 може да се преземе од врската https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Виндоус 7

Преземете инсталатери од горните врски. Забележете дека ова не ја презема целата SDK, тоа е само инсталер. Откако ќе ја извршите датотеката, ти можешизберете кои алатки сакате да бидат преземени. Ако ве интересира само Windbg, можете да исклучите сè друго и да изберете само „Алатки за отстранување грешки“ под „Заеднички комунални услуги“

Горенаведениот пакет ја инсталира верзијата windbg 6.12. Ако сакате брзо да инсталирате windbg, можете да одите на постара верзија (6.11) која може да се преземе од
врската дадена на крајот од овој пост.

Откако ќе ја извршите инсталацијата, можете да ја најдете програмата во Start Menu -> All Programs -> Debugging Tools for Windows -> Windbg

Ви го претставуваме WinDBG - Дел 1

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

WinDBG е одличен дебагер. Можеби нема многу лесен интерфејс и нема црна позадина стандардно, но тој е еден од најмоќните и најстабилните дебагери на Windows OS во моментов. Во оваа статија, ќе ве запознаам со основите на WinDBG за да можете да започнете со него.


WinDBG е одличен дебагер. Можеби нема многу лесен интерфејс и нема црна позадина стандардно, но тој е еден од најмоќните и најстабилните дебагери на Windows OS во моментов. Во оваа статија, ќе ве запознаам со основите на WinDBG за да можете да започнете со него.

Ова е прва статија од серијата посветена на WinDBG. Список на сите статии вклучени во оваа серија:

  • Дел 1 – инсталација, интерфејс, симболи, далечинско/локално дебагирање, систем за помош, модули, регистри.
  • Дел 2 – точки на прекин.
  • Дел 3 – проверка на меморијата, чекор-по-чекор дебагирање на програмата, совети и трикови.

Во оваа статија ќе разгледаме инсталација и прикачување на процес, а во следните написи ќе ги разгледаме точките на прекин, чекор-по-чекор дебагирање и проверка на меморијата.

Инсталирање на WinDBG

Во споредба со Windows 7, процесот на инсталација на WinDBG во Windows 8 претрпе мали промени. Во овој дел ќе разгледаме инсталирање на дебагер за двете оперативни системи.

Инсталирање на WinDBG на Windows 8

Во Windows 8, WinDBG е вклучен во комплетот за драјвери за Windows (WDK). Можете да ги инсталирате Visual Studio и WDK или одделно да го инсталирате пакетот Алатки за дебагирање за Windows 8.1, кој вклучува WinDBG.

Инсталаторот ќе ве праша дали сакате локално да го инсталирате WinDBG или да го преземете целиот развоен пакет за друг компјутер. Последново е во суштина еквивалент офлајн инсталатер, што е многу погодно ако сакате да го инсталирате пакетот на други системи во иднина.

Слика 1: Избор на тип на инсталација

Во следниот прозорец, треба да ги отштиклирате сите ставки освен „Алатки за дебагирање за Windows“ и да кликнете на копчето „Преземи“.

Откако инсталерот ќе ја заврши својата работа, одете во директориумот каде што е преземен пакетот (стандардно е c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) и поминете низ процедурата за инсталација.

Инсталирање WinDBG на Windows 7 и порано

За Windows 7 и порано, WinDBG е дел од пакетот „Алатки за дебагирање за Windows“ што е вклучен во Windows SDK и .Net Framework. Ќе треба да го преземете инсталаторот и потоа да изберете „Алатки за дебагирање за 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. Со остатокот од извршните датотеки, сè не е толку розово - многу ретко датотеките со информации за отстранување грешки се вклучени во апликацијата. Во повеќето случаи, компаниите го ограничуваат пристапот до такви информации.

За да го конфигурирате WinDBG да користи сервер за симболи на Microsoft, одете на File:Symbol File Path и поставете ја патеката на SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Се разбира, малку е чудно што ѕвездичките се користат како сепаратор. Откако ќе го поставите Microsoft Symbol Server, симболите ќе се преземат во папката C:\Symbols.

Слика 6: Поставување на Microsoft Symbol Server

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: Избирање на процесот за прикачување

Ако, по поврзувањето, апликацијата го паузира своето работење, можете да го користите режимот „Noninvaise“ со штиклирање на соодветното поле.

Дебагирање на далечински процес

Можеби понекогаш ќе треба да дебагирате процес на далечински систем. Би било многу попогодно да се реши овој проблем со користење на локален дебагер, наместо да се користи Виртуелна машинаили RDP. Или можеби го дебагирате процесот LoginUI.exe, кој е достапен само кога системот е заклучен. Во ситуации како овие, можете да користите локална верзија на WinDBG и да се поврзете со процесите од далечина. Постојат два најчести начини за решавање на овие проблеми.

Постоечки сесии за отстранување грешки

Ако веќе сте почнале да отстранувате грешки на програма локално (со поврзување или водење процес преку WinDBG), можете да внесете одредена команда и WinDBG ќе стартува „слушач“ со кој може да се поврзе далечинскиот дебагер. За да го направите ова, користете ја командата .server:

Сервер tcp:port=5005

Откако ќе ја извршите горната команда, може да видите вакво предупредување:

Слика 11: Предупредувачка порака што може да се појави по извршувањето на командата за создавање слушател

WinDBG потоа ќе пријави дека серверот работи:

0:005> .сервер tcp:port=5005
0: -далечински tcp:Port=5005,Server=USER-PC

Сега можете да се поврзете од далечински домаќин на постоечка сесија за отстранување грешки со одење на „File:Connect to a Remote Session“ и внесување нешто слично како следново во полето за текст: tcp:Port=5005,Server=192.168.127.138

Слика 12: Далечинско поврзување со сесија за отстранување грешки

Откако ќе се поврзете, ќе добиете потврда на далечинскиот клиент:


Серверот започна. Клиентот може да се поврзе со која било од овие командни линии
0: -далечински tcp:Port=5005,Server=USER-PC
MACHINENAME\User (tcp 192.168.127.138:13334) поврзан во пон. 16 декември 09:03:03 2013 г.

и пораката во локалната верзија на дебагерот:

MACHINENAME\User (tcp 192.168.127.138:13334) поврзан во пон. 16 декември 09:03:03 2013 г.

Креирање на далечински сервер

Можете исто така да креирате посебен сервер со WinDBG, да се поврзете со него од далечина и да изберете процес за отстранување грешки. Ова може да се направи со користење на датотеката dbgsrv.exe каде што планирате да ги дебагирате процесите. За да стартувате таков сервер, извршете ја следнава команда:

dbgsrv.exe -t tcp:port=5005

Слика 13: Стартување на далечински сервер

Повторно, може да добиете безбедносно предупредување што треба да го прифатите:

Слика 14: Безбедносна порака што може да се појави при стартување сервер за дебагирање

Можете да се поврзете со серверот за отстранување грешки со одење во Датотека: Поврзете се со далечински никулец и внесете ја следната линија во полето за текст: tcp:Port=5005,Server=192.168.127.138

Слика 15: Поврзување со серверот за отстранување грешки

Откако ќе се поврзете, нема да добивате сигнали што сте ги поврзале, но ако одите на „Датотека: Прикачи на процес“, ќе видите листа на процеси за отстранување грешки на серверот (каде што работи dbgsrv.exe). Сега можете да се вклучите во процесот како да го правите локално.

Систем за помош

Системот за помош во WinDBG е одличен. Покрај учењето нешто ново, треба да бидете во можност да добивате информации во позадина за некоја команда. Користете ја командата .hh за пристап до помошта за WinDBG:

Можете исто така да добиете информации за помош за одредена команда. На пример, за да добиете помош со командата .reload, користете ја следнава команда:

windbg> .hh .вчитај повторно

Или само одете во делот Помош:Содржина.

Модули

Додека програмата работи, се увезуваат различни модули за да се обезбеди функционалноста на апликацијата. Затоа, ако знаете кои модули се увезени од апликацијата, можете подобро да разберете како функционира. Во многу случаи, ќе го дебагирате конкретниот модул вчитан од програмата, наместо самата извршна датотека.

Откако ќе се поврзете со процесот, WinDBG автоматски ќе ги прикаже вчитаните модули. На пример, подолу се модулите откако се поврзав со calc.exe:

Microsoft (R) Windows Debugger верзија 6.12.0002.633 X86
Авторски права (в) корпорација Мајкрософт. Сите права се задржани.

*** почекајте со прикачување на чекање
Патеката за пребарување на симболи е: 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>lmf
името на модулот за почеток на крајот
00a70000 00b30000 калк 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 75cccc000 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 kernel32

Тип на датотека: DLL
ВРЕДНОСТИ НА ЗАГЛЕДИТЕ НА ДАТОТЕКАТА
14C машина (i386)
4 број на делови
4A5BDAAD печат за датум на време Пон 13 јули 21:09:01 2009 г.

0 покажувач на датотека до табелата со симболи
0 број на симболи
Големина E0 на изборниот заглавие
2102 карактеристики
Извршна
32 битна машина за зборови
DLL

ФАКУЛТАТИВНИ ВРЕДНОСТИ НА ЗАГЛЕДИТЕ
10B магија#
Верзија за поврзување 9.00
Големина на кодот C4600
C800 големина на иницијализирани податоци
0 големина на неиницијализирани податоци
510C5 адреса на влезната точка
1000 основен код
----- ново -----
77550000 база на слика
1000 порамнување на делот
200 порамнување на датотеки
3 потсистем (Windows CUI)
6.01 верзија на оперативниот систем
6.01 верзија на сликата
Верзија на потсистем 6.01
Големина на сликата D4000
Големина на заглавија од 800
D5597 контролна сума
00040000 големина на резерва на стек
00001000 големина на стек commit
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] адреса на директориумот за складирање на теми
816B8 [ 40] адреса на Load Configuration Directory
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, водич, 2, kernel32.pdb
(10) 4 c5498 c4c98

ЗАГЛЕД НА ДЕЛ #2
.име на податоци
Виртуелна големина на FEC
Виртуелна адреса C6000
Големина на необработени податоци E00
Покажувач на датотека C4E00 кон необработени податоци
0 покажувач на датотека до табелата за преместување
0 покажувач на датотека до броеви на линии
0 број на преселби
0 број на броеви на линии
C0000040 знамиња
Иницијализирани податоци
(не е наведено порамнување)
Читај пишувај

ЗАГЛЕД НА ДЕЛ #3
.rsrc име
520 виртуелна големина
Виртуелна адреса C7000
600 големина на необработени податоци
Покажувач на датотеката C5C00 кон необработени податоци
0 покажувач на датотека до табелата за преместување
0 покажувач на датотека до броеви на линии
0 број на преселби
0 број на броеви на линии
40000040 знамиња
Иницијализирани податоци
(не е наведено порамнување)
Само Читај

ЗАГЛЕД НА ДЕЛ #4
.релок име
B098 виртуелна големина
Виртуелна адреса C8000
B200 големина на необработени податоци
Покажувач на датотека C6200 кон необработени податоци
0 покажувач на датотека до табелата за преместување
0 покажувач на датотека до броеви на линии
0 број на преселби
0 број на броеви на линии
42000040 знамиња
Иницијализирани податоци
Отфрлање
(не е наведено порамнување)
Само Читај

Пораки и исклучоци

По поврзувањето со процес, прво се прикажува список на модули, а потоа може да се појават други пораки. На пример, кога ќе се приклучиме на calc.exe, WinDBG автоматски поставува точка на прекин (што е едноставно маркер што се користи за запирање на апликацијата). Информациите за точката на прекин се прикажуваат на екранот:

(da8.b44): Исклучок од инструкции за прекин - шифра 80000003 (прва шанса)

Оваа конкретна порака е исклучок, имено исклучок од прва шанса. Во суштина, исклучок е посебен услов што се јавува за време на извршувањето на програмата. Исклучок од прва шанса значи дека програмата запрела веднаш откако се случил исклучокот. Исклучок од втора шанса значи дека откако ќе се случи исклучокот, ќе се извршат некои операции, а потоа програмата ќе престане да работи.

Регистри

По прикажувањето на пораките и исклучоците, дебагерот ја прикажува состојбата на регистрите на процесорот. Регистрите се специјални променливи внатре во процесорот кои складираат мали делови од информации или ја следат состојбата на нешто во меморијата. Процесорот може многу брзо да ги обработи информациите во овие регистри. Ова е многу побрзо отколку секој пат да добивате информации преку автобус од RAM меморијата.

По поврзувањето со 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>р
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgТочка на прекин:
77663540 кубика инт 3

Ако сакаме да ја добиеме вредноста на одреден регистар, можеме да ја извршиме следнава команда:

0:005> r eax
eax=7ffd9000

Информациите може да се добијат истовремено од неколку регистри како што следува:

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

Покажувач на инструкција

Последната команда се однесува на инструкциите за извршување. Овде информациите се прикажуваат и на екранот, како во случајот со командата r, за она што го содржи EIP регистарот. EIP е регистар кој ја содржи локацијата на следната инструкција што треба да ја изврши процесорот. Она што го прикажува WinDBG е еквивалент на командата u eip L1, по што WinDBG оди на адресата наведена во регистарот EIP, го претвора овој дел во код за склопување и го прикажува на екранот.

ntdll!DbgТочка на прекин:
77663540 кубика инт 3

останете во контакт

Во идните статии, ќе разгледаме како да го користиме WinDBG на терен: точки на прекин, чекор-по-чекор дебагирање и прелистување во меморијата. Не менувај! Ј.

Алатки за дебагирање за Windows- Алатки за дебагирање на оперативни кодови Windows системи. Тие се збир на слободно дистрибуирани програми од Microsoft дизајнирани за дебагирање на корисничкиот режим и кодот на режимот на јадрото: апликации, драјвери, услуги, модули на јадрото. Комплетот со алатки вклучува дебагери на конзола и GUI режим, алатки за работа со симболи, датотеки, процеси и алатки за далечинско отстранување грешки. Комплетот со алатки содржи алатки што може да се користат за да се пронајдат причините за дефекти во различни компоненти на системот. Алатки за дебагирање за Windowsод одреден момент наваму не се достапни за преземање во форма на самостојна дистрибуција и се дел од Windows SDK (Windows Software Development Kit). Комплет инструментални Алатки за Windows SDK, пак, е достапен како дел од програмата за претплата на MSDN или може слободно да се преземе како посебна дистрибуција од msdn.microsoft.com. Според програмерите, најновите и повеќето сегашна верзијаАлатките за дебагирање за Windows се содржани специјално во Windows SDK.

Алатките за дебагирање за Windows се ажурираат и стануваат јавно достапни доста често и овој процес на кој било начин не зависи од објавувањето на оперативните системи. Затоа, проверувајте периодично за нови верзии.

Ајде сега да видиме за што, особено, се алатките за дебагирање Microsoft Windows:

  • Дебагирајте локални апликации, услуги, драјвери и јадро;
  • Дебагирајте далечински апликации, услуги, драјвери и кернел преку мрежата;
  • Дебагирајте ги апликациите што се извршуваат во реално време;
  • Анализирајте ги датотеките за складирање на меморијата на апликациите, кернелот и системот како целина;
  • Работа со системи базирани на архитектури x86/x64/Itanium;
  • Дебагирање на програми за кориснички режим и режим на јадро;

Достапни се следните верзии на алатките за дебагирање за Windows: 32-битен x86, Intel Itanium, 64-битен x64. Ќе ни требаат две од нив: x86 или x64.

Постојат неколку начини да се инсталираат алатки за дебагирање за Windows; во оваа статија ќе ги разгледаме само главните:

  • Инсталација преку веб-инсталатер.
  • Инсталирање алатки за дебагирање за Windows од ISO Слика на Windows SDK.
  • Инсталирање на алатки за дебагирање за Windows директно од пакетите dbg_amd64.msi / dbg_x86.msi.

Останува нејасно во кој момент, зошто треба да инсталирам алатки за дебагирање на мојот компјутер? Честопати се соочувате со ситуација кога мешањето во работната средина е крајно непожелно! И уште повеќе, инсталирањето на нов производ, односно правење промени во регистарот/системските датотеки, може да биде целосно неприфатливо. Примерите вклучуваат сервери кои се критични за мисијата. Зошто програмерите не ја разгледуваат опцијата за преносливи верзии на апликации кои не бараат инсталација?
Од верзија до верзија, процесот на инсталација на пакетот Алатки за дебагирање за Windows претрпува одредени промени. Ајде сега да преминеме директно на процесот на инсталација и да ги разгледаме начините на кои можете да го инсталирате комплетот со алатки.

Инсталирање алатки за дебагирање за Windows со помош на веб-инсталерот

Одете на страницата Архива на Windows SDK и пронајдете дел наречен Windows 10 и под ставката „Windows 10 SDK (10586) и емулатор на уред со Windows 10 Mobile (Microsoft) (верзија 10586.11)“.

Кликнете на ставката ИНСТАЛИРАЈ SDK. Откако ќе кликнете, преземете ја и стартувајте ја датотеката sdksetup.exe, која го иницира процесот на онлајн инсталација на Windows SDK. Во почетната фаза, инсталерот ќе провери дали пакетот .NET Framework е инсталиран на системот Најновата верзијаовој моментова е 4,5). Ако пакетот недостасува, инсталацијата ќе биде понудена и станицата ќе се рестартира по завршувањето. Веднаш по рестартирањето, во фазата на овластување на корисникот, започнува процесот на инсталација на самиот Windows SDK.

Често, при изборот на сите компоненти на пакетот без исклучок, може да се појават грешки за време на процесот на инсталација. Во овој случај, се препорачува да се инсталираат компоненти селективно, минималниот потребен сет.

Откако ќе заврши инсталацијата на алатките за дебагирање за Windows, локацијата на датотеките за дебагирање кога овој методНашата инсталација ќе биде како што следува:

  • 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 од Windows SDK ISO

Овој метод вклучува инсталирање на алатки за дебагирање за Windows користејќи ја целосната слика за инсталација на Windows SDK (Комплет за развивачи на софтвер). До одредено време, преземете ISO сликаза соодветниот систем тоа беше можно на страницата со архива на Windows SDK. Меѓутоа, во моментот, можете да добиете ISO слика на SDK со извршување на веб-инсталаторот sdksetup.exe и избирање Преземете го комплетот за развој на софтвер за Windowsво почетниот прозорец на инсталаторот:

Како што дознавме, претходниот метод на инсталација со користење на веб-инсталатер е прилично каприциозен и често завршува со грешка. На чисти системи се инсталира без проблеми, но на доволно оптоварени системи се јавуваат бројни проблеми. Ако ова е вашиот случај, тогаш користете го овој метод.

Според тоа, на страницата треба да ја изберете потребната дистрибуција, за мене (и мислам дека за многумина) во моментот е „Windows SDK за Windows 7 и .NET Framework 4“ и веднаш подолу кликнете на врската „Земи ISO слика на ДВД“.

Кога работите со страницата msdn.microsoft.com, препорачувам да користите прелистувач Internet Explorer, бидејќи има случаи на неработни производи од конкуренција!

Соодветно на тоа, потребно е да се избере исклучиво според потребата. Вообичаено, битноста на алатките за дебагирање за Windows се совпаѓа со битноста на системот. Моите системи се главно 64-битни, така што во повеќето случаи ја преземам сликата за 64-битен систем GRMSDKX_EN_DVD.iso.
Потоа, по преземањето на сликата, треба некако да работиме со постоечката ISO слика. Традиционалниот метод е, се разбира, снимање на ЦД, но ова е прилично долг и понекогаш скап метод. Предлагам да користите бесплатни комунални услуги за да креирате уреди со виртуелен диск во системот. Лично, претпочитам да користам DEAMON Tools Lite за оваа намена. Некој може да има други преференции, подиректни или лесни алатки, во зависност од вкусот и бојата, како што велат. ЦД:

Потоа, со двоен клик, го активирам автоматското вчитување и ја започнувам инсталацијата на Windows SDK:

Кога е време да се изберат компоненти за инсталирање од списокот, ги оневозможуваме апсолутно сите опции освен оние означени на сликата од екранот. Ова ќе ни помогне да избегнеме непотребни грешки сега.


Сè е токму така, на екранот има две опции означени: „Windows Performance Toolkit“ и „Debugging Tools for Windows“. Изберете ги двете, бидејќи Windows Performance Toolkit сигурно ќе ви помогне во вашата работа! Потоа, откако ќе кликнете на копчето „Следно“, инсталацијата продолжува како и обично. И на крајот ќе го видите натписот „Инсталирањето е завршено“.
По завршувањето на инсталацијата, работните директориуми на пакетот Алатки за дебагирање за Windows ќе бидат како што следува:

  • За верзијата x86:
  • За верзијата x64:

Во овој момент, инсталацијата на алатките за дебагирање за Windows може да се смета за завршена.

Инсталирање алатки за дебагирање за Windows преку датотека .msi

Ако се појават проблеми при инсталирање на алатките за дебагирање за Windows користејќи ги двата претходни методи, сè уште имаме уште еден на залиха, најсигурен и најпроверен на време, кој дојде на помош, така да се каже, повеќе од еднаш. Некогаш, пред интеграцијата во Windows SDK, алатките за дебагирање за Windows беа достапни како посебен installer.msi, кој сè уште може да се најде, но веќе во утробата на дистрибуцијата на Windows SDK. Бидејќи веќе имаме ISO слика на Windows SDK во наши раце, не можеме да ја монтираме во системот, туку едноставно да ја отвориме со помош на веќе добро познатиот архивар на WinRAR или кој било друг производ што работи со содржината на ISO-дисковите.

Откако ќе ја отвориме сликата, треба да одиме во директориумот „Поставување“ кој се наоѓа во root и потоа да избереме еден од директориумите:

  • За да ја инсталирате 64-битната верзија: \Поставување\WinSDKDebuggingTools_amd64и отпакувајте ја датотеката dbg_amd64.msi од овој директориум.
  • За да ја инсталирате 32-битната верзија: \Setup\WinSDKDebuggingTools и отпакувајте ја датотеката dbg_x86.msi од овој директориум.

По завршувањето на инсталацијата, работните директориуми на пакетот Алатки за дебагирање за Windows ќе бидат како што следува:

  • За верзијата x86: C:\Program Files (x86)\Debugging Tools for Windows (x86)
  • За верзијата x64: C:\Program Files\Debugging Tools for Windows (x64)

Во овој момент, инсталацијата на алатките за дебагирање за Windows може да се смета за завршена.

дополнителни информации

Не знам со што е поврзано ова, можеби поради мое невнимание, но по инсталирањето на алатките за дебагирање за Windows, инсталерот не ја поставува патеката до директориумот со дебагерот во променливата патека на системот Патека. Ова наметнува одредени ограничувања за стартување на различни задачи за дебагирање директно од конзолата. Затоа, ако нема патека, самостојно пишувам во прозорецот Променливи на животната средина патека до алатките за отстранување грешки:

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

* Во вашиот случај, патеките може да се разликуваат и поради употребата на ОС со различна големина на бит и поради употребата на различна верзија на SDK.

Услужните услуги на пакетот Алатки за дебагирање за Windows можат да работат како преносливи апликации; само треба да го копирате директориумот од работниот систем Microsoft Windows Performance Toolkitи користете го како пренослива верзија на производствен сервер. Но, не заборавајте да го земете предвид капацитетот на системот!! Дури и ако сте завршиле целосна инсталација на пакетот на критичен систем, можете да започнете со работа веднаш по инсталацијата, не е потребно рестартирање.

Состав на алатки за дебагирање за 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 за системи базирани на Windows NT/2000 за x86 машини? Веројатно е оставен поради компатибилност.
ia64kd.exe Обвивка за кд. Дали некогаш беше наречен kd за системи базирани на Windows NT/2000 за ia64 машини? Веројатно е оставен поради компатибилност.
kd.exe Дебагер на конзола за режим на јадро.
kdbgctrl.exe Алатка за управување со дебагирање на јадрото. Услужна алатка за управување и конфигурирање на врската за дебагирање на јадрото.
kdsrv.exe Сервер за поврзување за KD. Алатката е мала апликација која работи и чека далечинско поврзување. kd работи на клиентот и се поврзува со овој сервер за далечинско отстранување грешки. И серверот и клиентот мора да бидат од истиот состав на Алатки за дебагирање.
kill.exe Корисна алатка за завршување на процесите.
list.exe Алатка за прикажување на содржината на датотеката на екранот. Оваа минијатурна алатка беше вклучена со една цел - гледање големи текстуални датотеки или датотеки за дневници. Зазема малку простор во меморијата бидејќи го вчитува текстот на делови.
logger.exe Минијатурен дебагер кој може да работи само со еден процес. Услужната алатка инјектира logexts.dll во просторот за процеси, кој ги снима сите повици на функции и другите дејства на програмата што се проучува.
logviewer.exe Алатка за прегледување дневници снимени од дебагерот logger.exe.
ntsd.exe Симболичен дебагер на Microsoft NT (NTSD). Дебагер идентичен со cdb, освен што создава текстуален прозорец кога ќе се стартува. Како и cdb, ntsd е способен да ги дебагира и конзолните и графичките апликации.
pdbcopy.exe Услужна алатка за отстранување на приватни симболи од датотека со симболи, контролирајќи ги јавните симболи вклучени во датотеката со симболи.
далечински.exe Услужна алатка за далечинско дебагирање и далечинско управување на кој било дебагер на конзола KD, CDB и NTSD. Ви овозможува далечински да ги стартувате сите овие дебагери на конзолата.
rtlist.exe Прегледувач на далечински задачи. Алатката се користи за прикажување листа на процеси кои се извршуваат преку процесот на серверот DbgSrv.
symchk.exe Алатка за преземање симболи од серверот за симболи на Microsoft и создавање локален кеш за симболи.
symstore.exe Алатка за креирање мрежа или локално складирање на симболи (2-ниво/3-ниво). Складирањето на симболите е специјализиран директориум на дискот, кој е изграден во согласност со одредена структура и содржи симболи. Структура на потпапки со имиња идентични со имињата на компонентите се креира во root директориумот на симболите. За возврат, секоја од овие подпапки содржи вгнездени подпапки кои имаат посебни имиња добиени со хеширање на бинарни датотеки. Услужната алатка 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

За да ги анализирате отпадите од меморијата, ќе треба да го инсталирате дебагерот WinDBG, кој е вклучен во Windows SDK. Во моментот на пишување, најновото достапно верзии на Windows SDK:

  • Windows 10 SDK (преземање мрежен инсталатор)
  • Windows 8.1 SDK (преземање на мрежен инсталатор)

Чекор 3 - Мапирање на датотеки .dmp во WinDBG

За да го олесните читањето и анализирањето на складираните мемории, мапирајте ги датотеките .dmp на WinDBG. Ова ќе ви овозможи да ги отворите депонираните датотеки од Explorer директно во WinDBG без претходно да го стартувате.


Чекор 4 - Поставување сервер за симболи за примање датотеки со симболи за отстранување грешки


Инсталирањето и почетната конфигурација на WinDBG се завршени. За да го промените неговиот изглед, можете да отидете во менито Прикажи- ќе ги најдете поставките за фонтот со избирање Фонт, и поставките на прозорецот на конзолата во Опции.




Врв