Работа с дебъгер
Нека да преминем от теорията към практиката. Изтеглете Лазар с нов проект, създаден под формата на обикновен бутон и да спаси проекта в папка 27-01. Имената на проекта, форми, модули и не е необходимо да се промени един бутон, оставят имената на данните по подразбиране.
На следващо място, се генерира събитието OnClick на бутона, който пише следния код:
Какво правим тук? Използване число променлива и като за брояча на цикъл. Цикъл продукти от -3 до 3, т.е., 7 пъти, включително нула. Тялото на цикъла, разделим 10 до стойността на т. резултат е направена като низ-ви и се добавят към списъка с низове. По-горе споменахме, че тези действия трябва да бъдат приложени в Изключение боравене блок пробвам-накрая край. които сме направили.
Ако сте внимателно изучава курса, с просто око се вижда, че през четвъртото итерация на цикъла се случва по време на работа грешка - разделение 10 на нула. Такава очевиден пример е най-подходящ за разглеждане на интегриран дебъгер, както знаете, когато има грешка, и ще бъде в състояние да анализира работата на дебъгер. Затова ние не се преструваме, подозирам грешка.
Така че ние написал програма да продължи, че е време да се съберат. Щракнете върху "Старт" в контролния панел (или
Фиг. 27.3. съобщение за грешка Лазар
Според доклада, но е станала грешка по време на изпълнението на ред с код 42-ра. Е, натиснете "OK" и "Run -> Reset Debugger", за да спре програмата. Да се върнем към кода и анализира 42-ти ред (ако сте добавили празен низ, тогава ще има различен брой):
Е, нищо престъпно не е тук, защо е възникнала грешката? Кодът е валиден и обикновено трябва да се извършва ... Когато отидете в подобна безизходица. може да ви помогне здрав разум и интегриран дебъгер. Здравият разум казва, че е имало грешка някъде в тялото на за цикъл. И да се използват за корекция на грешки, е необходимо да се спира изпълнението на програмата в този цикъл, а след това да продължи неговия ред. За да спрете програмата са т.нар точка на пречупване (инж. Гранични).
Точки ostanova- тази линия, преди да изпълни, че за отстраняване на грешки отменя изпълнението на програмата, както и в очакване на по-нататъшни действията си.
Можете да зададете една точка или повече, в различни части на кода. Тъй като грешката в 42-ти ред, той ще бъде разумно да се спре изпълнението на предишния 41-ти ред. Преместване на курсора до тази линия, която и да е от мястото си.
Задайте точка на прекъсване може да бъде най-различни начини:
Последните два метода са най-удобният, но сте избрали. Във всеки случай, низ с набор точка на прекъсване ще се превърне в червено:
Фиг. 27.4. String точка на прекъсване
Премахване точка на пречупване също е удобен за последните две методи. Breakpoint имаме, отново натиснете бутона "Start". Програмата започва своето, щракнете върху бутона работа "Button1".
Фиг. 27.5. Низът да се изпълни по-
Ние не разполагаме с извиквания на функции, за да можем да се възползваме от двете
Сега, натиснете
Тук идват на помощ на друг полезен инструмент дебъгер - следи стойностите на променливите. Възстановяване на програмата с "Run -> Reset дебъгер." Сега натиснете бутона отново "на Button1" бутона "Старт" и след това отново. Debugger отново преустанови изпълнението на програмата по линията с цикъла, но не бързайте да натиснете
Фиг. 27.6. Инсталиране наблюдава променлива
Сега дебъгер следи стойностите на променливата аз. но ние сме нито толкова по-добре - ние не виждаме тези ценности! За да ги видите, трябва да се покаже списъка на прозореца часовник. Това се прави с командата "View -> Windows Debug -> Наблюдение на прозорци" или "горещи клавиши"
че ние трябва да се изчислява в рамките на цикъла. В списъка с часовник, и ще видите променливата аз. и експресия. и техните значения:
Фиг. 27.7. Наблюдение Списък Window
Тъй като променливата аз все още не е назначен на стойност -3, стойностите на колона, вие вероятно ще видите един, който е бил инициализира нашата променлива по подразбиране. Съответната стойност ще бъде в израза. Сега ние сме готови да продължат напред. преса
преса
грешка се появява, когато променливата и е равна на нула. И тук не е трудно да се отгатне защо тази грешка възниква - защото там е опит за разделение 10-0.
Фиг. 27.8. Програмата Полученото съобщение
Както можете да видите, изчислението. когато аз е равна на нула, то се пропуска.
Вграден дебъгер има и други инструменти, с които ще можете да свикнете с течение на времето като експериментирате с тях.
Благодарим Ви за прекрасен, разбира се!
Независимият работата №2 съставяне MyCript.pas модул (OS: Windows 7 x64, Лазар 1.4 Win64), издадени за грешка в монтажа код
mycript.pas (54,5) Грешка: Asm: [тласък reg32] невалидна комбинация от опкод и операнди
mycript.pas (95,5) Грешка: Asm: [поп reg32] невалидна комбинация от опкод и операнди
Аз разбирам, че курса е готов за 32-битова операционна система, но какво да кажем в случая с 64-битови системи?
На манипулаторите FileCreate елементи на менюто, FileOpen, както и затваряне на формуляра манипулатор OnClose - в тези три процедури съдържат един и същ код
тях, преди да създадете нов текст>
ако след това Memo1.Modified започне
// ако потребителят е съгласен да запазите промените:
ако MessageDlg ( "Запиши като"
"Сегашната файлът е редактиран. Запазване на промените?
mtConfirmation [mbYes, mbNo, mbIgnore], 0) = mrYes тогава
FileSaveClick (подателя);
приключи; // ако
Позволете ми да ви попитам: няма ли да е по-добре да се направи този код в отделна процедура, например - под формата на манипулатор на събитие OnCloseQuery? Доколкото мога да си спомня за Delphi опит, обадете се на тази процедура сама по себе си не би трябвало да доведе до затварянето на формата. Това означава, че тя може да се използват при процедури за почистване Memo1 и четене от файл. Или в Лазар не можеш да направиш?
Свързани статии