ПредишенСледващото

Как да променя дебъгер по подразбиране, който използва операционната система в случай на авария провал?

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion AeDebug

Ако се вгледате в ключов AeDebug регистър, можете да видите, че стойността, която е въведена за влизането Debugger, изглежда точно същата като низ предава wsprintf на API-функция:

drwtsn32 - стр. - Е. - г

при което - п - идентификатор (ID) процес катастрофа, и - д - стойност събитие се справят с които трябва дебъгер размер, когато тя получи първия цикъл на отстраняване на грешки на потока от отстраняване на грешки изход събитие. Характеристиката на сигнала събитие разказва операционната система, дебъгер е прикрепен успешно.

Ако динамичното поле тест за отстраняване на грешки е активирана, приложението ще работи малко по-бавно, защото, когато заявление се позовава HeapFree функция, е необходимо по-нататъшно валидиране "купчина". Обявата 4-1 показва пример програма, която поврежда памет. Ако тази програма се изпълнява в рамките на дебъгер, че е лесно да забележите, че функция DebugBreak се нарича два пъти (на първо повикване функция HeapFree). Тук е на изхода, от който се вижда, че при използването на купчина-област, която има някои проблеми.

Купчина [Heaper. Търсейки]: Heap блок в 00441E98 модифициран в 00441EAA минало

исканата размер на

Купчина [Heaper. Търсейки]: Невалиден адрес, посочен в

RtlFreeHeapt 440000, 441eaO)

Ако тази програма се изпълнява извън дебъгер, той завършва с няма данни за каквито и да било проблеми.

Heap - "китка", куп област. - Ed.

Това е напълно възможно, тъй като не само дебъгерите, но всяко приложение може да предизвика функция HeapCreate. - Ed.

Този набор от инструменти, можете да намерите в придружаващия CD. - Ed.

Това натоварване модул, който е част от функцията, показана на Обява 4-1. - Ed.

Много от бутоните опция регистрационна система, а ядрото Mode Switch Дестинация Глобални Flags прозореца са глобални. Ние трябва да се обърне специално внимание при инсталиране на тях, защото те могат да имат решаващо влияние върху производителността на системата. Когато поставите ключа към Опции на Дестинация Image File е много по-безопасно, тъй като всички настройки се отрази само на един модул (чието име се появява в съседна област на изображението името на файла).

Отстраняване на грешки в общ въпрос - на принципа на ядрото на операционната система дебъгер

// Създаване на купчини площ от операционната система.

ДРЪЖКА hHeap = HeapCreate (0, 128, 0);

// достатъчно памет за размера на блока от 10 байта.

LPVOID pMem = HeapAlloc (hHeap, 0,10);

// Запишете 12 байта 10 байтов блок (преливник куп-област).

memset (pMem, OxAC,

// Разпределяне на нов размер на блока от 20 байта.

LPVOID pMem2 = HeapAlloc (hHeap, 0, 20);

// Запишете 1 байт във втория блок.

знак * pUnder = (знак *) ((DWORD) pMem2 - 1);

// Освободете първия блок. Това ще се хареса на HeapFree

// предизвика прекъсване в код отстраняване на грешки куп-областта

HeapFree (hHeap 0, pMem);

// Освободете втори блок. Имайте предвид, че този разговор не ще

// издава Посланието на вина

HeapFree (hHeap, 0, pMem2);

// Освободете сляпо единица. Имайте предвид, че този разговор не ще

// да издава съобщения за проблема

HeapFree (hHeap, О (LPVOID) Oxl); HeapDestroy (hHeap);

Ако зададете същата опция че на фигура 4.1, и изпълнението повторение на HEAPER. EXE, там ще се получи следната по-многословно изход:

PAGEHEAP: процес 0x490 създаден за отстраняване на грешки купчина 00430000

(Flags 0xl, 50, 25, 0, 0)

PAGEHEAP: процес 0x490 създаден за отстраняване на грешки купчина 00CF0000

(Flags Oxl, 50, 25, 0-0)

PAGEHEAP: процес 0x490 създаден за отстраняване на грешки купчина 01600000

(Flags Oxl, 50, 25, 0, 0)

PAGEHEAP: открит Tail корупция запълване:

Разпределяне на 0x01606FF0

Заявен размер 0x0000000A

Разпределени размер 0x00000010

Корупцията в Ox01606FFA

PAGEHEAP: Опит за обръщение към блок, която не е разпределена

списък на съдържанието обяснява името на квадратчетата, задайте Глобални Flags панел.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!