Компютри Windows интернет

Инсталиране на инструменти за отстраняване на грешки за Windows. Инструменти за отстраняване на грешки в Windows: диагностицирайте и поправете инструментите за отстраняване на грешки в BSOD за използване с Windows

на 22 юни 2010 г.

Преди това Windbg беше наличен отделно за изтегляне. Но за най -новите версии Microsoft го запазва като част от Windows SDK. Моля, намерете връзките за изтегляне по -долу.

Windows 10

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

Windows 7

Изтеглете инсталаторите от горните връзки. Имайте предвид, че това не изтегля целия SDK, а просто инсталатор. След като стартирате файла, можете да изберете кои инструменти искате да изтеглите. Ако се интересувате само от Windbg, можете да изключите всичко останало и да изберете само „Инструменти за отстраняване на грешки“ под „Общи помощни програми“

Горният пакет инсталира версия на windbg 6.12. Ако искате бързо да инсталирате windbg, можете да отидете на по -стара версия (6.11), която можете да изтеглите от
връзката, дадена в края на тази публикация.

След като извършите инсталацията, можете да намерите програмата в менюто "Старт" -> Всички програми -> Инструменти за отстраняване на грешки за Windows -> Windbg

По време на критичен срив операционната система Windows прекъсва и показва син екран на смъртта (BSOD). Съдържание оперативна памети цялата информация за възникналата грешка се записва във файла за пейджинг. На следващия зареждане на Windowsсе създава авариен дъмп с информация за отстраняване на грешки въз основа на запазените данни. В дневника на системните събития се генерира критична грешка.

Внимание!Авариен дъмп не се генерира, ако дисковата подсистема се провали или критична грешкасе появи в началния етап на зареждане на Windows.

Видове дампи за сривове на Windows

Използвайки примера на текущата операционна система Windows 10 (Windows Server 2016), ще разгледаме основните типове дъмпи на паметта, които системата може да създаде:

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

Как да активирам изхвърлянето на памет в Windows?

Използвайте Win + Pause, за да отворите прозореца за системни настройки, изберете „ Допълнителни системни параметри"(Разширени настройки на системата). В раздела „ Допълнително"(Разширени), раздел" "(Стартиране и възстановяване) щракнете върху" Настроики"(Настройки). В прозореца, който се отваря, конфигурирайте действията в случай на системна повреда. Поставете отметка в квадратчето „ Запишете събития в системния регистър"(Напишете събитие в системния дневник), изберете типа на дампа, който да се генерира при срив на системата. Ако в квадратчето за отметка „ Заменете съществуващия дамп файл"(Презаписване на всеки съществуващ файл) поставете отметка в квадратчето, тогава файлът ще бъде презаписан при всяка грешка. По -добре е да премахнете това квадратче, тогава ще имате повече информация за анализ. Деактивирайте и автоматичното рестартиране на системата (Автоматично рестартиране).

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

Сега, когато се появи BSOD, можете да анализирате дамп файла и да намерите причината за сривовете. Minidump се записва в папката% systemroot% \ minidump по подразбиране. За да анализирате дамп файла, препоръчвам да използвате програмата WinDBG(Дебъгер на ядрото на Microsoft).

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

Помощна програма WinDBGе включено в " SDK за Windows 10“(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 Symbol Server.

Конфигурирайте 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 не е свързан.

Командите се въвеждат в командния ред, разположен в долната част на прозореца.

Най -важното нещо, на което трябва да обърнете внимание, е кодът за грешка, който винаги е посочен в шестнадесетична стойност и изглежда така 0xXXXXXXXX(посочено в една от опциите - STOP :, 02.07.2019 0008F, 0x8F). В нашия пример кодът за грешка е 0x139.

Дебъгерът ви подканва да изпълните командата! Analyze -v, просто задръжте курсора на мишката върху връзката и щракнете. За какво е тази команда?

  • Той извършва предварителен анализ на дампа на паметта и предоставя подробна информацияза да започнете анализа.
  • Тази команда ще покаже кода STOP и символичното име на грешката.
  • Той показва стека от повиквания на командите, които са довели до необичайно прекратяване.
  • Освен това тук се показват грешки в IP адреса, процесите и регистрите.
  • Екипът може да предостави готови препоръки за решаване на проблема.

Основните моменти, на които трябва да обърнете внимание, когато анализирате след изпълнение на командата! Analyze –v (списъкът е непълен).

1: kd>! Анализирайте -v


* *
* Анализ на грешки *
* *
*****************************************************************************
Символичното име на STOP грешката (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Описание на грешката (Компонент на ядрото повреди критична структура от данни. Това повреждане потенциално може да позволи на нападател да поеме контрола над тази машина):

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

Аргументи:
Arg1: 0000000000000003, 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`3a20d528: nt! KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt! KiBugCheckDispatch + 0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt! KiFastFailDispatch + 0xd0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt! KiRaiseSecurityCheckFailure + 0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ?? :: FNODOBFM :: `низ" + 0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600: nt! IopSynchronousServiceTail + 0x379
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380: nt! NtWriteFile + 0x694
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt! KiSystemServiceCopyEnd + 0x13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`475307da

Разделът на кода, където е възникнала грешката:

FOLLOWUP_IP:
nt! KiFastFailDispatch + d0
fffff804`0117da50 c644242000 mov байт 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
ProductVersion: 6.3.9600.18946
FileVersion: 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

Отворете файла на драйвера и проверете неговата версия. В повечето случаи проблемът с драйверите се решава чрез актуализирането им.

Инструменти за отстраняване на грешки за 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 архитектури;
  • Отстраняване на грешки в потребителски режим и програми в режим ядро;

Налични са следните версии на Debugging Tools за Windows: 32-битов x86, Intel Itanium, 64-битов x64. Нуждаем се от два от тях: x86 или x64.

Има няколко начина за инсталиране на Debugging Tools за Windows, в тази статия ще разгледаме само основните от тях:

  • Инсталиране чрез уеб инсталатора.
  • Инсталиране на инструменти за отстраняване на грешки за Windows от ISO Образ на Windows SDK.
  • Инсталиране на инструменти за отстраняване на грешки за Windows директно от пакетите dbg_amd64.msi /dbg_x86.msi.

Остава неясно в кой момент, защо трябва да инсталирам инструментариума за отстраняване на грешки на компютъра си? В крайна сметка често се сблъсквате със ситуация, при която намесата в работна средасилно нежелателно! Освен това инсталирането на нов продукт, тоест извършването на промени в системния регистър / системните файлове, може да бъде напълно неприемливо. Примерите са критично важни сървъри. Защо разработчиците не мислят за опция с преносими (преносими) версии на приложения, които не изискват инсталация?
Процесът на инсталиране на пакета Debugging Tools for Windows е претърпял няколко промени от версия на версия. Нека сега да преминем директно към процеса на инсталиране и да разгледаме начините, по които инструментариумът може да бъде инсталиран.

Инсталиране на инструменти за отстраняване на грешки за Windows с помощта на уеб инсталатора

Отидете на страницата Архив на SDK на Windows и намерете раздела под Име на Windows 10 и по -стари, вижте „Windows 10 SDK (10586) и Microsoft Windows 10 Mobile Device Emulator (версия 10586.11)“.

Кликваме върху елемента МОНТАЖ SDK... След като щракнете, изтеглете и стартирайте файла sdksetup.exe, който инициира онлайн инсталирането на Windows SDK. В началния етап инсталаторът ще провери дали пакетът .NET Framework е инсталиран в системата. последна версия(в момента 4.5). Ако пакетът липсва, инсталацията ще бъде предложена и станцията ще бъде рестартирана след приключване. Веднага след рестартирането, на етапа на оторизация на потребителя, инсталационният процес започва директно от SDK на Windows.

Често при избора на всички компоненти на пакет без изключение могат да възникнат грешки по време на инсталационния процес. В този случай се препоръчва компонентите да се инсталират избирателно, минимално необходимия набор.

След като инсталацията на Debugging Tools за 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 и по -нови, пътищата на инсталиране са забележимо различни от класическите за всички предишни версииинструменти за отстраняване на грешки?

Огромен плюс този методИнсталиране на Debigging Tools за Windows е инсталирането на версии на инструментите за отстраняване на грешки за всички архитектури наведнъж.

Инсталиране на инструменти за отстраняване на грешки за Windows от ISO образа на SDK на Windows

Този метод включва инсталиране на инструментите за отстраняване на грешки за Windows, като се използва пълният инсталационен образ на Windows SDK (Комплект за разработчици на софтуер). Изтеглете до определено време ISO изображениеза съответната система може да бъде на страницата за архивиране на SDK на Windows. В момента обаче можете да получите ISO образа на SDK, като стартирате инсталатора на уеб sdksetup.exe и изберете елемента Изтеглете Комплект за разработка на софтуер за Windowsв стартовия прозорец на инсталатора:

Както беше установено, предишният метод на инсталиране с помощта на уеб инсталатора е доста капризен и често се проваля. На чисти системи се инсталира без проблеми, но при достатъчно заредени системи възникват множество проблеми. Ако имате точно такъв случай, използвайте този метод.

Съответно на страницата е необходимо да изберете необходимия дистрибутивен комплект, за мен (и мисля, че за много) в момента това е "Windows SDK за Windows 7 и .NET Framework 4" и точно по -долу щракнете върху връзката "Вземете ISO изображение на DVD диск "...

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

Съответно е необходимо да се избира само когато е необходимо. Обикновено битовостта на Debugging Tools за Windows е същата като битовата на системата. Моите разследвани системи са предимно 64-битови, така че в повечето случаи изтеглям изображението за 64-битовата система GRMSDKX_EN_DVD.iso.
След това, след като изтеглим изображението, трябва по някакъв начин да работим със съществуващия ISO образ. Традиционният начин е, разбира се, запис на компактдиск, но това е доста дълъг и понякога скъп метод. Предлагам да използвате безплатни помощни програми за създаване на виртуални дискови устройства в системата. Лично аз предпочитам да използвам програмата DEAMON Tools Lite за тази цел. Някой може да има други предпочитания, по -директни или леки помощни програми, вкус и цвят, както се казва .. След инсталацията Инструменти на DAEMON Lite, просто щраквам двукратно върху файла с изображение GRMSDKX_EN_DVD.iso и имам нов виртуален компактдиск в системата:

Тогава кликнете два пътиАктивирам автоматично стартиране и стартирам инсталацията на Windows SDK:

Когато дойде редът да изберете компонентите, които да бъдат инсталирани от списъка, тогава деактивираме абсолютно всички опции, с изключение на тези, маркирани на екранната снимка. Това ще помогне да избегнем ненужните грешки за нас сега.


Всичко е точно така, на екранната снимка са отбелязани две опции: „Windows Performance Toolkit“ и „Debugging Tools for Windows“. Изберете и двете, защото Windows Performance Toolkit определено ще бъде полезен за вашата работа! Освен това, след като щракнете върху бутона "Напред", инсталацията продължава както обикновено. И в края ще видите надписа „Инсталацията завършена“.
В края на инсталацията работните директории на набора Debugging Tools for Windows ще бъдат както следва:

  • За x86 версия:
  • За x64 версия:

Това завършва инсталирането на Debugging Tools за Windows.

Инсталиране на инструменти за отстраняване на грешки за Windows чрез .msi файл

В случай на проблеми по време на инсталирането на Debugging Tools за Windows по двата предишни начина, все още имаме още един, най-надеждният и изпитан във времето, който помогна, така да се каже, повече от веднъж. Някога, преди интегрирането в Windows SDK, Debugging Tools за Windows бяха достъпни като отделен .msi инсталатор, който все още може да бъде намерен сега, но вече в недрата на комплекта за разпространение на Windows SDK. Тъй като вече имаме ISO образ на Windows SDK в ръцете си, не можем да го монтираме в системата, а просто да го отворим с помощта на добре познатия архиватор WinRAR или друг продукт, който работи със съдържанието на ISO дискове.

След като отворим изображението, трябва да отидем в директорията "Setup", разположена в корена, и след това да изберем една от директориите:

  • За да инсталирате 64-битовата версия: \ Setup \ WinSDKDebuggingTools_amd64и разопаковайте файла dbg_amd64.msi от тази директория.
  • За да инсталирате 32-битовата версия: \ Setup \ WinSDKDebuggingTools и разопаковайте файла dbg_x86.msi от тази директория.

В края на инсталацията работните директории на набора Debugging Tools for Windows ще бъдат както следва:

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

На този етап инструментите за отстраняване на грешки за инсталирането на Windows са завършени.

Допълнителна информация

Не знам с какво е свързано, може би с моята небрежност, но след като инсталира инструментите за отстраняване на грешки за Windows, инсталаторът не регистрира пътя към директорията с инструмента за отстраняване на грешки в системната променлива Path. Това налага определени ограничения за изпълнение на различни задачи за отстраняване на грешки директно от конзолата. Следователно, при липса на път, аз самият пиша в прозореца Променливи на околната средапът към инструментите за отстраняване на грешки:

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

* Във вашия случай пътищата могат да се различават както поради използването на операционна система с различна битовост, така и поради използването на SDK на различна версия.

Инструментите за отстраняване на грешки за пакетите на Windows могат да работят като преносими приложения, просто трябва да копирате директорията от работната система Комплект инструменти за ефективност на Microsoft Windowsи го използвайте като преносима версия на производствен сървър. Но не забравяйте да вземете предвид капацитета на системата !! Дори ако сте инсталирали напълно пакета на критична система, можете да започнете работа веднага след инсталацията, не се изисква рестартиране.

Инструменти за отстраняване на грешки за състава на Windows

И сега, накрая, представяме състава на Debugging Tools за Windows:

Файл Назначаване
adplus.doc Документация за помощната програма ADPlus.
adplus.exe Конзолно приложение, което автоматизира отстраняването на грешки в cdb за създаване на сметища, регистрационни файлове за един или повече процеси.
agestore.exe Помощна програма за премахване на остарели файлове от хранилището, използвано от сървъра със символи или сървъра източник.
breakin.exe Помощна програма, която ви позволява да изпращате дефинирана от потребителя комбинация от прекъсвания към процеси, подобно на натискането на CTRL + C.
cdb.exe Конзола за отстраняване на грешки в потребителски режим.
convertstore.exe Помощна програма за преобразуване на символи от двустепенни в тристепенни.
dbengprx.exe Reaper (прокси сървър) за отдалечено отстраняване на грешки.
dbgrpc.exe Помощна програма за показване на информация за състоянието на RPC повикване.
dbgsrv.exe Сървърният процес се използва за отдалечено отстраняване на грешки.
dbh.exe Помощна програма за показване на информация за съдържанието на файл със символи.
dumpchk.exe Помощна програма за проверка на дампа. Помощна програма за бърза проверка на дамп файл.
dumpexam.exe Помощна програма за анализ на думпа на паметта. Резултатът се показва в% SystemRoot% \ MEMORY.TXT.
gflags.exe Редакторът на глобалните флагове на системата. Помощната програма управлява ключовете в системния регистър и други настройки.
i386kd.exe Опаковка за kd. Кога се нарича kd за Windows NT / 2000 базирани системи за x86 машини? Вероятно е оставено от съображения за съвместимост.
ia64kd.exe Опаковка за kd. Кога се нарича 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 Помощна програма за премахване на частни символи от файл със символи, контрол върху публични символи, включени във файла със символи.
remote.exe Помощна програма за дистанционно отстраняване на грешки и дистанционно управление на всеки KD, CDB и NTSD конзолен дебъгер. Позволява ви да стартирате отдалечено всички тези конзолни отстраняващи грешки.
rtlist.exe Дистанционен преглед на задачи. Помощната програма се използва за изброяване на изпълнявани процеси чрез сървърния процес DbgSrv.
symchk.exe Помощна програма за изтегляне на символи от сървър на символи на Microsoft и създаване на локален кеш на символи.
symstore.exe Помощна програма за създаване на мрежа или локално съхранение на символи (двустепенна / тристепенна). Съхранението на символи е специализирана директория на диск, която е изградена в съответствие с определена структура и съдържа символи. В основната директория на символите се създава структура от подпапки с имена, идентични с имената на компонентите. На свой ред всяка от тези подпапки съдържа вложени подпапки със специални имена, получени чрез хеширане на двоични файлове. Помощната програма symstore сканира папките на компонентите и добавя нови компоненти към хранилището на символи, където всеки клиент може да ги извлече. Твърди се, че symstore се използва за получаване на символи от 0-степенно хранилище и поставянето им в двустепенна / 3-степенна памет.
tlist.exe Преглед на задачи. Помощна програма за изброяване на всички работещи процеси.
umdh.exe Помощна програма за изхвърляне на купчина в потребителски режим. Помощна програма за анализ на купчините (купчината) на избрания процес. Позволява ви да показвате различни опции за купчината.
usbview.exe USB преглед. Помощна програма за преглед на USB устройства, свързани към компютъра.
vmdemux.exe Демултиплексор виртуална машина... Създава множество именовани тръби за една COM връзка. Каналите се използват за отстраняване на грешки в различни компоненти на виртуалната машина
windbg.exe Отстраняване на грешки в потребителски режим и режим на ядро.

Представяме Ви WinDBG - Част 1

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

WinDBG е чудесен грешка за отстраняване на грешки. Може да няма много удобен за потребителя интерфейс и да няма черен фон по подразбиране, но е един от най-мощните и стабилни грешки в Windows в момента. В тази статия ще ви запозная с основите на WinDBG, за да можете да започнете с нея.


WinDBG е чудесен грешка за отстраняване на грешки. Може да няма много удобен за потребителя интерфейс и да няма черен фон по подразбиране, но е един от най-мощните и стабилни грешки в Windows в момента. В тази статия ще ви запозная с основите на WinDBG, за да можете да започнете с нея.

Това е първата статия от поредицата за WinDBG. Списък на всички статии, включени в този цикъл:

  • Част 1 - инсталация, интерфейс, символи, отдалечено / локално отстраняване на грешки, помощна система, модули, регистри.
  • Част 2 - Точки на прекъсване.
  • Част 3 - Проверка на паметта, стъпка по стъпка отстраняване на грешки в програмата, съвети и трикове.

В тази статия ще разгледаме инсталацията и свързването към процес, а в следващата ще разгледаме точки на прекъсване, поетапно отстраняване на грешки и проверка на паметта.

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

В сравнение с Windows 7, процесът на инсталиране на WinDBG в Windows 8 е претърпял малки промени. В този раздел ще ви преведем през инсталирането на дебъгъра за двете операционни системи.

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

В Windows 8 WinDBG е включен в комплекта драйвери за Windows (WDK). Можете да инсталирате Visual Studio и WDK или отделно да инсталирате пакета Debugging Tools за Windows 8.1, който включва WinDBG.

Инсталаторът ще ви попита дали искате да инсталирате WinDBG локално или да изтеглите целия пакет за програмисти за друг компютър. Последният по същество е еквивалент на офлайн инсталатор, което е чудесно, ако искате да инсталирате пакета на други системи в бъдеще.

Фигура 1: Избор на тип инсталация

В следващия прозорец трябва да премахнете отметката от всички елементи освен „Инструменти за отстраняване на грешки за Windows“ и да кликнете върху бутона „Изтегляне“.

След като инсталаторът завърши работата си, отидете в директорията, където е изтеглен пакетът (по подразбиране е c: \ Users \ Потребителско име \ Downloads \ Windows Kits \ 8.1 \ StandaloneSDK) и преминете през процедурата за инсталиране.

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

За Windows 7 и по -ранни версии, WinDBG е включен в пакета Debugging Tools for Windows, който е включен в Windows SDK и .Net Framework. Ще трябва да изтеглите инсталатора и след това да изберете „Инструменти за отстраняване на грешки за Windows“ по време на процеса на инсталиране.

По време на инсталацията избирам опцията Debugging Tools в секцията Redistributable Packages, за да създам самостоятелен инсталатор, който да улесни последващите инсталации.

Фигура 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 Server

WinDBG автоматично ще зарежда символи за двоични файлове, когато е необходимо. Можете също да добавите своя собствена папка със символи, като тази:

SRV * C: \ Символи * 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 OS, която задава някои параметри по време на стартиране, така че за да се опрости процесът на отстраняване на грешки, също е по -добре да се свържете със стартиращия процес, вместо да стартирате услугата чрез дебъгъра. Някои хора твърдят, че изпълнението на процес чрез отстраняване на грешки има сериозно въздействие върху производителността. Накратко, опитайте и двете и изберете кое работи най -добре за вас. Ако по някаква причина предпочитате определен метод, споделете мислите си в коментарите!

Старт на процеса

Ако отстранявате грешки в самостоятелно приложение, което работи локално, а не в мрежа, може да искате да го стартирате чрез WinDBG. Това обаче не означава, че не можете да се свържете с вече изпълнен процес. Изберете най -удобния за вас метод.

Не е трудно да стартирате процеса. Отидете на „Файл: Отворете изпълнимия файл“ и изберете изпълнимия файл, който искате да отстраните. Можете също да предоставите аргументи или да зададете началната директория:

Фигура 9: Избор на изпълним файл за отстраняване на грешки

Процесна връзка

Свързването към вече изпълнен процес също не е трудно. Имайте предвид обаче, че в някои случаи може да отнеме известно време, за да намерите точния процес, който искате да отстраните. Например, някои браузъри създават един родителски процес и след това още няколко процеса за всеки раздел. По този начин, в зависимост от дампа на срив, който отстранявате грешки, може да искате да се свържете не към родителския процес, а към процеса, свързан с раздела.

За да се свържете с вече изпълнен процес, отидете на „Файл: Прикачете към процес“ и след това изберете PID или име на процеса. Не забравяйте, че трябва да имате съответните права, за да започнете процеса.

Фигура 10: Избор на процес за свързване

Ако след свързване приложението е спряло работата си, можете да използвате режима „Noninvaise“, като поставите отметка в съответното квадратче за отметка.

Отстраняване на грешки в отдалечен процес

Понякога може да се наложи да отстраните грешки в процес на отдалечена система. Би било много по -удобно да направите това с локален дебъгер, вместо да използвате виртуална машина или RDP. Или може би отстранявате грешки в процеса LoginUI.exe, който е достъпен само когато системата е заключена. В такива ситуации можете да използвате локалната версия на WinDBG и да се свързвате с процеси от разстояние. Има два най -често срещани начина за изпълнение на тези задачи.

Съществуващи сесии за отстраняване на грешки

Ако вече сте започнали отстраняване на грешки в програмата си локално (чрез свързване или стартиране на процес чрез WinDBG), можете да въведете конкретна команда и WinDBG ще стартира слушател, към който може да се свърже отдалечения дебъгер. За да направите това, използвайте командата .server:

Сървър tcp: порт = 5005

След като изпълните горната команда, може да видите предупреждение по следния начин:

Фигура 11: Предупредително съобщение, което може да се появи след изпълнение на командата за създаване на „слушател“

Тогава WinDBG ще докладва, че сървърът работи:

0: 005> .server tcp: port = 5005
0: -отдалечен tcp: Порт = 5005, Сървър = ПОТРЕБИТЕЛ-PC

Сега можете да се свържете от отдалечен хост към съществуваща сесия за отстраняване на грешки, като отидете на „Файл: Свържете се с отдалечена сесия“ и въведете нещо подобно в текстовото поле: tcp: Port = 5005, Server = 192.168.127.138

Фигура 12: Свързване от разстояние към сесия за отстраняване на грешки

След като се свържете, ще получите потвърждение на отдалечения клиент:


Сървърът стартира. Клиентът може да се свърже с всеки от тези командни редове
0: -отдалечен tcp: Порт = 5005, Сървър = ПОТРЕБИТЕЛ-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: порт = 5005

Фигура 13: Стартиране на отдалечения сървър

Отново може да получите предупреждение за сигурност, което трябва да приемете:

Фигура 14: Съобщение за защита, което може да се появи по време на стартиране на сървъра за отстраняване на грешки

Можете да се свържете със сървъра за отстраняване на грешки, ако отидете във файла „Файл: Свържете се с отдалечено заглушаване“ и въведете следния ред в текстовото поле: tcp: Порт = 5005, Сървър = 192.168.127.138

Фигура 15: Свързване към сървър за отстраняване на грешки

След свързването няма да получавате никакви сигнали, които сте свързали, но ако отидете на „Файл: Прикачете към процес“, ще видите списък с процесите на сървъра за отстраняване на грешки (където dbgsrv.exe работи). Сега можете да се включите в процеса, сякаш го правите локално.

Помощна система

Помощната система в WinDBG е страхотна. В допълнение към научаването на нещо ново, трябва да можете да получите основна информация за команда. Използвайте командата .hh за достъп до помощта на WinDBG:

Можете също да получите помощна информация за конкретна команда. Например, за да получите помощ с командата .reload, използвайте следната команда:

windbg> .hh .reload

Или просто отидете в раздела Помощ: Съдържание.

Модули

Докато програмата работи, се импортират различни модули, които осигуряват функционалността на приложението. Следователно, ако знаете кои модули са импортирани от приложението, можете по -добре да разберете как работи. В много случаи ще отстранявате грешки в конкретен модул, зареден от програма, а не от самия изпълним файл.

След свързване към процеса, WinDBG автоматично ще покаже заредените модули. Например, модулите по -долу са показани, след като се свържа с calc.exe:

Microsoft (R) Windows Debugger версия 6.12.0002.633 X86
Авторско право (в) Microsoft Corporation. Всички права запазени.

*** изчакайте с предстоящо прикачване
Пътят за търсене на символи е: 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 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 UxТема C: \ Windows \ system32 \ UxTheme.dll
74710000 748ae000 COMCTL32 C: \ Windows \ WinSxS \ x86_microsoft.windows.common-
контроли_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

ОПЦИОНАЛНИ СТОЙНОСТИ НА ХЕДЕРА
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 размер на ангажиране на стека
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] адрес на Reserved Directory

РАЗДЕЛ ЗАГЛАВИТЕЛ # 1
.име на текста
Виртуален размер C44C1
1000 виртуален адрес
C4600 размер на необработените данни
800 файлов указател към необработени данни

0 брой премествания
0 брой номера на редове
60000020 знамена
Код
(не е посочено подравняване)
Изпълнете Read

Отстраняване на грешки в директории (2)
Тип Размер Адрес указател
cv 25 c549c c4c9c Формат: RSDS, guide, 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
.reloc име
Виртуален размер 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> 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
eax = 7ffd9000

Информация от няколко регистри едновременно може да бъде получена, както следва:

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

Указател към инструкция

Последната команда е посветена на изпълними инструкции. Тук информацията също се показва на екрана, какъвто е случаят с командата r, която съдържа EIP регистъра. EIP е регистър, съдържащ местоположението на следващата инструкция, която процесорът да изпълни. Това, което WinDBG показва, е еквивалент на командата u eip L1, след което WinDBG отива на адреса, посочен в регистъра на EIP, преобразува този раздел в код за сглобяване и го показва на екрана.

ntdll! DbgBreakPoint:
77663540 cc int 3

поддържате връзка

В бъдещите статии ще разгледаме как да използваме WinDBG в жива среда: точки на прекъсване, стъпка по стъпка отстраняване на грешки и сканиране на паметта. Не превключвайте! Дж.

Тези видове неизправности обикновено се свързват с дефектен драйвер, което може да бъде трудно да се изчисли. Подобрената система за проследяване на грешки в Windows Vista (и не само в Vista!) Често може да ви доведе до проблемен файл. В резултат на това повечето хора престават трескаво да се опитват да работят на нестабилен компютър, запазвайки документи с параноична редовност и се надяват на най -доброто.

При Windows се сриваобикновено се създава т. нар. "dump на паметта". Последното може да бъде изследвано с безплатния дебъгер Инструмент за WindowsИнструменти за отстраняване на грешки, които могат да ви насочат към източника на проблема. Следователно всичко, което трябва да направите, е:

Изтеглете си инструмент за отстраняване на грешки

Можете да изтеглите инструменти за отстраняване на грешки в Windows директно от уебсайта на Microsoft. Програмата работи с различни операционни системи от Windows NT 4 до Windows 2008, така че не би трябвало да имате проблеми с нея. Да, не може да се каже, че е стабилен под Windows 7 RC, но според нашите тестове все още работи. Следователно дори опит за диагностициране на проблема от Windows 7 RC може да бъде успешен.

Конфигурирайте вашата система

Необходимо е по време на сривове вашият компютър да създава сметки за памет, които по -късно ще служат като източник на информация за отстраняване на грешки. Ето защо е важно Windows да е конфигуриран да генерира дампи. За да персонализирате вашата операционна система, щракнете върху Кликнете с десния бутонс мишката върху компютъра (Компютър) и изберете Свойства (Свойства). След това щракнете върху раздела „Разширени системни настройки“, намерете подраздела „Настройки за стартиране и възстановяване“ и се уверете, че параметърът „Информация за отстраняване на грешки при запис“ е зададен на „Дъмп на паметта на ядрото“ или „Пълен дъмп на паметта“.

След това щракнете върху Старт, отидете на Всички програми, изберете Инструменти за отстраняване на грешки и стартирайте WinDbg. В програмата отидете в менюто File и изберете Symbol File Path ... След това напишете следния ред в отварящия се прозорец:

SRV * c: \ символи * http: //msdl.microsoft.com/download/symbols

Последният определя пътя към специални данни - така наречените „символи“, които могат да помогнат на инструмента за отстраняване на грешки да идентифицира вашия дефектен файл.

След като влезете в реда, щракнете върху бутона OK. По -късно, когато работите с инструмента за отстраняване на грешки, този ред ще изтегли символи от msdl.microsoft.com и ще ги запише в папката c: \ symbols.

Решете проблема си

Сега изчакайте следващия срив със син екран и последващото завършване на рестартирането на компютъра. След това стартирайте отново WinDbg (потребителите на Vista трябва да стартират програмата като администратор), щракнете върху менюто File, изберете Open Crash Dump, отворете файла \ Windows \ MEMORY.DMP и програмата веднага ще започне да го анализира.

За съжаление, WinDbg предоставя много малко информация за това, което прави, така че може дори да мислите, че програмата е замразена. Изчакайте обаче. Разберете, анализирането, да речем, 4 GB памет на не много мощен компютър може да отнеме известно време, до часове. Затова бъдете търпеливи и е по -добре да оставите анализа за през нощта.

Обикновено резултатът се получава в рамките на няколко минути. Това се доказва от реда на анализатора на грешката при анализ на Bugcheck, докладващ нещо като „Вероятно причинено от: UACReplace.sys“. В превод на руски това означава, че проблемът вероятно е причинен от файла UACReplace.sys. Въведете го в лента за търсене, например Google и ще разберете истинския му произход. По -специално, ако принадлежи към някоя от програмите, които сте инсталирали или инсталиран драйвертогава можете просто да опитате да я актуализирате. Може би това ще реши проблемите, които имате.

Трябва да кажа, че от време на време WinDbg изобщо не може да даде име на файла или просто избира една от DLL на Windows. Ако това се е случило с вас, просто кликнете върху командния прозорец над лентата на състоянието и въведете командата:

След това натиснете Enter. Това ще ви предостави по -подробен доклад, който може да съдържа информация за възможните причини за вашите проблеми.

Ако този път нямате късмет, не се отчайвайте. Отстраняването на грешки е доста трудно дори за експерти. Така че просто затворете WinDbg и стартирайте анализатора отново след следващия срив. Може би това ще ви даде повече информация. Късмет!