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

SoftICE - универсален дебъгер, който може да анализира и отстраняване на грешки всеки код, включително прекъсване и IO шофьори съчетания. SoftICE състои от отстраняване на грешки на ниво ядро ​​(режим на ядрото дебъгер) (всъщност това е дебъгер) и информация за отстраняване на грешки товарач (Symbol Loader). Символ Loader полезност (SL) зарежда информацията за отстраняване на грешки на вашия модул ви позволява да конфигурирате SoftICE, и дава възможност за запис на историята на командния (история буфер) във файл.

Възможности SoftICE:
  • Символичен отстраняване на грешки на 32-битови приложения, отстраняване на грешки за драйвери на устройства WIN NT, драйвери за Win95, VxD, 16-битови програми за DOS и Windows.
  • Отстраняване на грешки в почти всеки код, включително програма за прекъсване и вътрешни съчетания WIN 95 и WIN NT.
  • Монтаж точки на прекъсване в четене / запис на паметта, за четене / запис на входно-изходни портове, прекъсва.
  • Създаване точки на прекъсване на Windows съобщения.
  • Създаване точки на прекъсване, предизвикано при определени условия (условни гранични стойности) и действията, които трябва да се извършва, когато се задейства прекъсване.

SL програма ви позволява да прочетете информацията за отстраняване на грешки от Прил програми (EXE, DLL, VxD, 386, OCX) и го зареди в дебъгер, изпълнението си, и автоматично да зададете точка на прекъсване на входната точка на програмата, написана на файла за отстраняване на грешки дневник.

Пакетът включва например SoftICE GdiDemo.

1. Свалете програмата дебъгва

  • Започнете SL.
  • Изберете Open опция модул от менюто File.
  • Open Gdidemo.exe.
  • Изберете опция Load Module в менюто.

SL ще излъчи .NMS информацията за грешки във файла, изтеглете изходните файлове, стартирайте програмата дебъгва (в този случай Gdidemo) и се появяват в SoftICE, където ще видите изходния код.

Осветеният линия с номер 35 - е входната точка (входна точка) в програмата си. Ако SL донесе съобщение като "Възникна грешка по време на символ превод / натоварване", означава в отстраняването на грешките файл липсва информация за отстраняване на грешки, натиснете ОК и се насладете на [раз] асемблер.

2. Управление SoftIce'om

Ако всичко е направено правилно, трябва да видите SoftICE разделен на няколко прозореца. Топ прозорец - Регистър Window (прозорец регистър) - показва състоянието на регистрите на процесора. По-долу, че е прозорец Data Window данни, в които можете да видите или редактирате сметище с памет. По-долу е Code прозорче (код прозорец) - това е изходния код на програмата (ако сте изтеглили информация за отстраняване на грешки), или да разделя кода на програмата. Най-долу е на прозореца команда - Command Window, в него можете да въведете команди и да видим резултатите от тяхното изпълнение. В крайна сметка - на телефонна линия за помощ в нея, когато въведете подчертани възможности и синтаксис на командите. Най-удобният начин за управление на SoftICE с мишката.

Промяна на размера - за да преместите курсора към долната граница на прозореца, в която искате да промените размера или да го затворите, щракнете с левия бутон на мишката, и надолу (увеличаване на размера) или надолу (намаляване), ако искате да затворите прозореца, преместете долната граница на горната част фраза се появява в прозореца на тока при прозореца и прозореца ще изчезне.
Забележка: Не можете да промените размера на прозореца и регистрите на FPU.

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

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

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

Промяна на стойността на флага - за да преместите курсора на знамето, която искате да промените, натиснете левия бутон на мишката, а след това натиснете Ins, можете да промените стойността на флага за противоположния (малката буква означава, че знамето не е зададен, голям набор).

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

Създаване точки на прекъсване на изпълнение - за да преместите курсора към линията в прозореца Code, където искате да спрете, и кликнете два пъти върху левия бутон на мишката, поставете точка на прекъсване линия е маркирана.

Премахване от Watch Window променливи - мястото на курсора върху променливата, която искате да премахнете, натиснете левия бутон на мишката, променливата ще бъде осветен, натиснете клавиша Del - променливи изчезне.

3. Трейс програма

Използвайте T (следи) команда за ottrassirovat един отбор или F8 ключ, който е приложен към заповедта по подразбиране за команда Т. Там ще се намира в текущия ред и курсорът се премества на следващия ред и да го изтъква. Тази линия:

натиснете F8 отново, курсорът ще се премести на следващия ред:

Натиснете F8 отново и да ви отведе до линията

С цел да се трасира програма, която използвате командата T, който изпълнява една програма източник изявление, или една машина инструкция.

Все още има отбор или P ключ F10 една, което извършва една стъпка в програмата, т.е. следата на функция или за прекъсване, не е нужно да поставят под контрол, докато функцията е завършен и не се връща от функцията обратно. P команда е удобно да се използва в случая, когато отстранявате грешки основен алгоритъм и разсеяни чрез проследяване на всеки ирационални процедури.
Забележка: Командата Т не може да ottrassirovat системни функции (Win32 API повиквания) докато сте в режим източник, за проследяване на тяхната нужда да ходят на смесен или код на готовност.

Window Местните прозорец показва текущия стек рамката. В нашия случай тя съдържа локалните променливи за функцията WinMain.

T команден вход RegisterAppClass, функция Местните прозорец прозорец ще бъде празна, тъй като все още предстои да бъде определена за локалните променливи на функцията. функция RegisterAppClass е в INIT.C. файл SoftICE показва текущия файл в горния ляв ъгъл на прозореца на код

Въведете командата T отново Местните жители с прозорче ще съдържа параметър премина RegisterAppClass функция (hInstance) и местната структура wndClass. Преди структурата на знак плюс, което означава, че вътре има променливи, които могат да се видят (както можете да видите на низови променливи и масиви). Преглед на структурата може да бъде двойно кликване. + Знак ще се промени - и вие ще видите променливите, които изграждат структурата. Близо структура също може да щракнете два пъти върху.

5. Задайте спирка с прилагането на точки

Гранични да изпълняват се делят на два вида: прости гранични стойности и единствена точка на прекъсване.

Единични точки на прекъсване

Отиди до прозореца с код, с помощта на ключа PgDn за да преместите курсора на линията с номер 61 (същото може да се направи с помощта на командата U 0.61) в този ред да бъде първият, наричаме функция Win32 API RegisterClass. Използването ТУК команда (F7 ключ), за да стартирате програмата тази линия.

Сегашната линия в програмата дебъгва беше на линията: Забележка: Същият резултат може да се получи с помощта на командата G 0,61 (за да стартирате програмата да линия 61).

Конвенционалните точки на прекъсване

Следните стъпки илюстрират използването на конвенционални гранични стойности т.е. тези, които ще се задейства, докато не ги отмените. Намери следващото обаждане RegisterClass, че е в съответствие 74. Поставете курсора по тази линия и въведете командата BPX (Breakpoint изпълним), или натиснете F9 (тази команда, в памет на мястото на разположение на командването под курсора се записва отбор INT3, но не можете да го видите. линия трябва да бъде подчертана. за отстраняване на точка на прекъсване, можете да ре-вход на същия отбор. Ако сте достатъчно късмет да притежавате Pentium процесор, монтажа и отстраняването на точки на прекъсване се намалява до двойно кликване върху този отбор, където искате да зададете точка на прекъсване. След устието anovki точки на прекъсване стартирате програмата, когато програмата ще изпълни инструкциите INT3, тя преминава контролира SoftICE G или X (клавиш F5) команда, а след това той ще се появи, преди да видите информация за инсталираните точки на прекъсване може BL (Breakpoint List) командни ..:

Тъй като по-нататъшна стъпка по стъпка проследяване функция RegisterAppClass няма смисъл за нас, за да се върнете до мястото, където функцията е наречена. За да направите това, има екип с P RET (клавиш F12) параметър. Тя ви позволява да стартирате програмата, докато не срещне команда RET (RETF), след като изпълни тази команда SoftICE от съчетания и да останете на линията след поканата към рутината. Що се отнася до нашата програма: функция RegisterAppClass се нарича от функцията WinMain, SoftICE престоя в функцията WinMain на линията след функции RegisterAppClass разговори, т.е. подчертана линия ще бъде:

Използвайте BC отбор (Breakpoint Clear) с броя на точки на прекъсване, че сте гледали с командния BL, защото това ще премахне тази конкретна точка на прекъсване, или вместо броя, тип *, след което можете да отнеме всичките точки на прекъсване (можете да въведете номера на точки на прекъсване през запетая, ако искате да премахнете няколко точки).

6. Използване на информационни команди

SoftICE разполага много различни отбори, с помощта на който можете да видите състоянието и да получи друга информация за операционната система и приложенията, които работят по него. Ние считаме, че само два отбора: H (Помощ) и класа. Тези команди изход много информация в прозореца на командния (Command Window), така че е препоръчително да се увеличи размера на прозореца, за да затворите прозореца на локална променлива (Местните Window) а.

Според екипа на H, за да получите помощ за всички команди SoftICE или повече информация за конкретна команда, ако въведете името му като аргумент на командния H:

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

Целта на функцията е RegisterAppClass класове регистрация модел прозорци, които ще бъдат използвани GdiDemo приложението да създава прозорци. С помощта на командата КЛАС може да се намери, регистрирани класове за GdiDemo:

7. Символичните имена

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

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

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

8. Условни точки на прекъсване

Създаване точки на прекъсване на функция LockWindowInfo.

Екипът BPX LockWindowInfo сложи точка на прекъсване, за да изпълнява тази функция. Всеки път, когато някой от прозорците в GDIDEMO за кандидатстване, ще трябва да актуализирате информацията си, програмата ще се нарича LockWindowInfo функция, тъй като тази функция зададете точка на пречупване, тя ще се нарича SoftICE. Екипът BL провери дали е установена точка на пречупване. Стартирайте приложение X или екип Г. LockWindowInfo на След като функция се нарича, SoftICE появят. Тъй като актуализацията се случва постоянно, постоянно ви се обади и SoftICE, което е много неудобно, ако ние се интересуваме от актуализацията на даден прозорец. За да вземете на повикване, за да актуализирате даден прозорец, например, POLYDEMO, използвайте условно точка на прекъсване. От първоначалния текст на програма (wininfo.c файл) на тази функция LockWindowInfo получава като входен аргумент един параметър HWND (дръжка Window) - дръжка на прозореца и се връща към една стойност на разговори функция - указател към променливата за дадения прозорец. Това означава, че ако бяхме принудени да предизвика прекъсване само манипулатор POLYDEMO прозорец, щяхме да постигне целта си. На първо място, ние трябва да знаем дръжката на прозореца ни, за това ние използваме командата:

Сега, знаейки къде и какво сме преминали към функция, можем да сложим точка на прекъсване условно. За да направите това, обадете се на редактиране точка на прекъсване на определена на LockWindowInfo функции:

В крайна сметка на командния ред се появява прозорец:

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

Breakpoint сега ще изглежда така:

Изключване 0 прекъсване BD (Breakpoint Disable) команда:

За разлика от това, екипът на BC, която премахва точка на прекъсване, командата BD временно деактивира една точка, т.е. тя няма да работи, но това винаги е възможно да се върне, за да бъде (Breakpoint Enable) команда. Disconnected прекъсване маркира със звездички до номера на последователност от точки на прекъсване.

Започнете SoftICE екипи X или Г, когато прозорец POLYDEMO се опита да достигне първия двойна дума копие на прозореца на данни, точка на пречупване се задейства и SoftICE се появи, това ще се случи в функциите и PolyRedraw PolyDrawBez. Тези функции се отнасят до областта nBezTotal, който се намира на нулевото начало в прозореца POLYDEMO инстанция данни. В това поле се определя броя на криви едновременно показват в прозорец POLYDEMO.

Забележка: Поради архитектурата на Intel процесори за прихващане на разговори да се случва в клетката на паметта след изпълнение на командата за достъп до паметта, т.е. SoftICE спре за следващата команда.

Изчистване на всички точки на прекъсване BC * команда и излизане SoftICE.

Как да си направим SoftICE pabotat?

CONFIG.SYS: = устройството C: \. \. \ S-Ice.Exe
След това стартирайте Ldr.Exe. В MS-DOS има малък бъг: че е погрешно да се излага на стойността на SP регистър - това намалява стойността си до 2, и някаква защита, активно използване на комина принуден да се обеси на задачата. Третирана редактиране MS-DOS обувка код INT 21h AX = 4B01h команда или "R SP = SP + 2"

Как да си направим SoftICE / Win / W95 pabotat?

WINICE.DAT редактирате файла, за да се даде възможност за отстраняване на грешки, за да се зареди информацията за символ от системата DLL-те. (Референтни номера са Winice.DAT USER.EXE, KRNL386.EXE, WIN386.EXE)

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

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