You are on page 1of 8

Лабораторна робота № 3

Технологія роботи з налагоджувачем TurboDebugger (TD) фірми Borland

Мета роботи: ознайомитися з технологією роботи налагоджувача TD.

Порядок роботи:
1. Ознайомитися з етапами процесу налагодження програми.
2. Ознайомитися з можливостями TD.
3. Засвоїти типові операції (переміщення між вікнами налагоджувача, зміна
вікон, покрокове виконання команд, внесення змін до даних оперативної
пам’яті, внесення змін у вміст регістрів, внесення змін до стеку, встановлення
контрольних точок).
4. Продемонструвати основні операції з налагодження на прикладі програми з
лабораторної роботи № 2, тобто виконуваного файлу *.exe, який ви створили,
наприклад, Privet.exe.

Теоретична частина
Процес налагодження в загальному випадку можна розділити на чотири
етапи:
1. Виявлення помилки.
2. Пошук її місцезнаходження.
3. Визначення причини помилки.
4. Виправлення помилки.
Турбо налагоджувач можна використати для вирішення двох важких проблем
процесу налагодження: пошуку місця знаходження помилки і її причин. Також є
можливість тестувати нові значення змінних, щоб побачити, як вони впливають на
вашу програму. Ці можливості реалізуються за допомогою трасування, покрокового
виконання, перегляду, змін й простежування.
Трасування: дозволяє виконувати програму по одному оператору.
Зворотне трасування Ви можете виконати код у зворотному порядку.
Покрокове виконання. Ви можете виконувати програму по одному
оператору, але пропускати виклики процедур і функцій. Якщо ви впевнені, що в
процедурах і функціях немає помилок, то пропуск їхнього виклику збільшить
швидкість налагодження.
Перегляд: Ви можете у Турбоналагоджувачі створити спеціальне вікно для
показу всіляких речей - змінних, їхніх значень, точок зупинки, вмісту стека, файлів
реєстрації, даних, файлів вихідних текстів, кодів ЦП, пам'яті, регістрів, інформації
процесора, арифметики із плаваючою крапкою, виводу програми.
Перевірка. Ви можете у Турбоналагоджувачі одержати вміст складних
структур даних з вашої програми.
Зміна. Можна змінити вміст змінної (як локальної, так і глобальної) на нове
значення.
Простежування. Ви можете виділити деякі програмні змінні й простежувати
зміну їхніх значень у процесі роботи програми.
Турбо налагоджувач запускається таким чином:
Td ім’я виконуваного файла.ехе

Верхній рядок кадра відладчика – це головне меню.

1
Використання меню
Існує 4 способи вибору пунктів з головного меню:
1. Натиснути F10, підвести курсор до необхідного елементу меню і натиснути
клавішу Enter.
2. Натиснути клавішу F10 і клавішу з першою буквою елементу меню (F, E, V, R,
В, D, О, W, H).
3. Натиснути клавішу Alt одночасно з першою клавішею пункту (елементу)
меню {F, Е, V, R, В, D, О, W, Н) для активізації вибраного меню команд.
Команда системного меню Ё Repaint Desktop (Система Восстановление оперативной
области экрана) відновлює екран операційного середовища у випадку, коли було
перемикання між екранами. Команда Ё Restore Standard (Система Восстановление
стандартной схемы) відновлює ту схему відладчика, в яку ви увійшли при
завантаженні ТD.
4. Вибрати елемент (пункт) меню за допомогою маніпулятора типу "миша" і
натиснути кнопку. Для переміщення по всім меню окрім головного
використовуйте наступні клавіші: стрілки вправо/ вліво для переміщення від
одного меню, що спускається, до іншого (наприклад, коли ви знаходитеся в
меню File, натискання стрілки вліво перемістить вас в меню View). Для
переміщення по командам конкретного меню використовуйте стрілки вгору і
вниз. Використовуйте клавіші Ноme й End для переміщення до першої та
останньої альтернатив (команд) меню, відповідно.

Нижній рядок (гарячі клавіші) – це основні команди, які виконуються за


допомогою функціональних клавіш F1 – F10.
Натискання клавіш ALT+Enter розкриває вікно TD на весь екран, повторне
натискання цих клавіш повертає вікно до попереднього розміру.
Екран користувача - це екран виводу вашої програми. Цей екран буде мати
точно такий же вид, який він мав би при виконанні вашої програми без Турбо
налагоджувача (безпосередньо під DOS). Клавіша Alt-F5 – це оперативна клавіша,
що дозволяє перемикатися між операційним середовищем й екраном
користувача. Також можна виконати цю команду за допомогою меню вікна
Windows, рядок User Screen Alt-F5. Нижче у цьому рядку буде наведений список усіх
вікон, відкритих користувачем через меню View з відповідним номером (наприклад,
1 CPU
2 Dump DS:0000
3 Registers
Можна викликати будь-яке вікно за допомогою натискання клавіш
ALT+номер вікна або шляхом послідовного перебору F6-Next.
Для виходу з TD треба натиснути ALT+X або команду File → Quit і ви
повертаєтесь у командний рядок.

Після запуску TD перше речення позначається значком ►. Натиснувши


клавішу F7 або F8, ми виконуємо одне речення програми. Команда F7 (trace,
трасування) дозволяє виконати покрокове виконання тіла циклу, процедури або
підпрограми обробки переривань, увійти в середину програм, що викликаються, а
також виконати цикли крок за кроком. Команда F8 (step, крок), навпаки, виконує
підпрограми та цикли як одну нерозривну дію – звичайну команду, що значно
2
прискорює покрокову відладку програми у випадку, коли користувач впевнений, що
підпрограма виконується вірно.

Можна зразу виконати цілий фрагмент програми, тобто декілька речень, до


поточного положення курсора. Для цього треба встановити курсор перед тим
реченням, на якому треба зробити зупинку та натиснути клавішу F4 (here, сюди).
Далі знову можна виконувати програму, натискаючи F8 або F4.
Для повторного виконання програми треба її рестартувати, вибравши пункт
Run → Program reset або натиснути CTRL+F2.

Для завершення роботи з програмою Privet.exe з попередньої роботи № 2


треба встановити маркер у рядок INT 21, натиснути F8, ALT+F5 і на екрані
користувача ми побачимо результат NACHINAEM!. Для повторного виконання
програми її треба перезавантажити натисканням клавіш CTL+F2 або командою Run
→ Program Reset. Програма знову завантажується з диску та TD відновлює свої
вхідні опції.

Переміщатися по діалоговим вікнам можна за допомогою клавіш Tab і Shift-


Tab.

Більшість вікон Турбо відладчика (15 типів вікон) виводиться з меню View
(Огляд). Інший клас вікон, що називається вікнами перевірки (Inspector), виводиться
при виборі елемента меню Data Inspect (Дані Перевірка) або команди локального
меню Inspect.
Коли ви відкриваєте одне (або більше) із цих вікон, їх можна переміщувати,
міняти розмір, закривати й виконувати інші операції за допомогою команд меню
Window (Вікно) ALT-F3 закриває вікно, ALT-F6 - відновлює і Е (System- Система).
Після запуску TD Privet.exe відкривається вікно Module, в якому
відображається модуль Privet.asm. Це вікно також можна відкрити у випадку
запуску TD, далі слід відкрити файл за допомогою команди ALT+F або меню
File→Open , отримаємо вікно з шаблоном виконуваних модулів *.exe, натискаємо
або Browse, або на клавіатурі стрілку ↓ і знаходимо файл Privet.exe, ОК. Також
клавіша F3 відкриває вікно Module.
У вікні Module (Модуль) на екран виводиться код програми, що
налагоджується. Ви можете переміщуватися по цьому модулю й переглядати дані й
код, позиціонуя курсор на іменах змінних програми й даючи відповідні команди в
локальні меню. Для того, щоб відкрити вікно Module, можна також натиснути
клавішу F3.
Для виведення поточного стану центрального процесора слід натиснути або
ALT+V або вибрати команду View та вибрати CPU.
Вікно CPU (ЦП) показує поточний стан центрального процесора (ЦП). Це
вікно містить п'ять областей, в одній з яких показані машинні інструкції – вміст
сегменту коду вихідної програми (CS:зсув машинна інструкція вхідна команда),
нижче у вікні показані шістнадцятирічні байти даних (DS:зсув шістнадцятирічні
байти), у третій області - вміст регістрів ЦП (AX, BX, CX, DX, SI, DI, BP, SP, DS,
ES, SS, CS, IP), у четвертій області – вміст регістр прапорців ЦП (C, Z, S, O, P, A, I,

3
D), у п’ятій - вміст стека у вигляді шістнадцятирічних байтів (SS: шістнадцятирічні
байти).
У вікні View → Dump (Дамп) виводиться вміст області пам'яті. Це вікно
еквівалентно області дані вікна CPU. Ви можете виводити дані у вигляді символів,
шістнадцятирічних байт, слів, подвійних слів, або в будь-якому форматі із
плаваючою крапкою.
У вікні View → Registers (Регістри) виводиться вміст регістрів і прапорів
процесора (ЦП). Дане вікно містить дві області, які еквівалентні областям регістрів і
прапорів вікна CPU (ЦП).
У вікні Breakpoints (Точки зупинки - переривань) виводяться встановлені вами
точки зупинки. Точка зупинка визначає те місце у вашій програмі, де буде зупинено
виконання програми. При цьому ви можете перевірити стан програми. Перед
виконанням програми для встановлення точок переривань треба перейти в
потрібний рядок програми та натиснути клавішу F2. Рядок з контрольною точкою
буде підсвічуватися червоним кольором. Щоб вилучити контрольну точку, треба
знову перейти в потрібний рядок програми та натиснути клавішу F2.

У вікні Stack (Стек) виводиться поточний стан стека. При цьому внизу
зазначені найперші виклики функцій (у програмах мовою С и C++ це функція main),
а потім - всі наступні виклики в тому порядку, якому вони виконувалися.

Виконання роботи
Запускаємо налагоджувач Td Privet.exe

Верхній рядок відладчика є головним меню з певними пунктами, які можна


відкрити різними способами: натиснути F10 і мишкою натиснути на потрібний
елемент або ж замість миші натиснути першу букву елемента меню, що потрібне;
інший спосіб це Alt+перша буква елемента меню. Звичайно можна переміщуватись
по меню за допомогою стрілок.
Module. Спершу буде відкрите вікно Module, в ньому розміщується вихідний
текст програми. Також вікно може бути відкритим у випадку запуску TD, потім
необхідно відкрити файл(Alt+F/Меню File-Open), далі можемо вибрати потрібний
4
нам *.exe файл. Відкрити вікно Module можна за допомогою клавіші F3. Ми можемо
спостерігати за значеннями полів даних. Наприклад, щоб вивести на екран значення
поля даних потрібно навести курсор на ім'я потрібного нам поля і вибрати меню
Data-Inspect, тоді з'явиться вікно, де можна скоректувати ім'я. Після виведеться
вікно, в якому будуть міститися характеристики та значення певної змінної. У вікні
Inspecting можна змінити значення цього поля даних: натискаємо Alt+F10 (ця
комбінація робить вікно активним, тобто відкриває його внутрішнє меню з
додатковими якимись можливостями), далі Change, і у новому відкритому вікні
можемо прописати потрібне значення. І якщо тепер виконати програму, то на екран
виведеться результат вже зі змінами.
CPU Вікно CPU складається з 5 областей, воно відображає поточний стан
центрального процесора.
Перша область (сегмент коду) містить машинні інструкції: вміст сегменту
коду вихідної програми: CS:зсув, машинна інструкція та вхідна команда;
друга область (розташована нижче, сегмент даних) відображає
шістнадцятирічні байти даних: DS:зсув шістнадцятирічні байти;
третя область відображає вміст регістрів центрального процесора : AX, BX,
CX, DX, SI, DI, BP, SP, DS, ES, SS, CS, IP;
четверта область містить регістр прапорців ЦП: C, Z, S, O, P, A, I, D;
п’ята область відображає вміст стека у вигляді шістнадцятирічних байтів: SS:
шістнадцятирічні байти.
Переміщуватися між областями можна за допомогою клавіші Tab або Shift
Tab.

Відладка програми здійснюється за допомогою трасування-F7(trace)(або ж у


меню Run), тобто необхідно виконати покрокове (поператорне) виконання
команд програми, при цьому буде заходити в кожний цикл, і проходити крок за
кроком (є також зворотнє трасування). Але одночасно необхідно при виконанні

5
кожної команди аналізувати вміст РЕГІСТРІВ (шістнадцятирічне
представлення), тобто розуміти для себе чи вірно виконалася команда.
Покрокове виконання - F8 (step) може виконувати програму, не заходячи в
цикли, тобто це означає, що будуть виконуватися підпрограми і цикли як одна дія
(це прискорює процес відладки). А можна виконати якийсь певний блок програми
(декілька оператоів) відразу, для цього необхідно встановити курсор на тому
реченні, до якого хочемо виконати програму, далі натискаємо F4.
Регістр ІР вказує на команду, яка буде виконуватися наступною.
Коли в програмі в викоанєте рядка int21h, тобто закривається функція
виведення на екран 09h (при цьому курсор ввстановлюється на команду, яка буде
виконуватися наступною), необхідно натиснути Alt+F5 (це перехід в середовище
DOS) на екрані користувача вивелося наше повідомлення NACHINAEM!
Щоб повернутись у вікно CPU для продовження відладки наступних
операторів, необхідно натиснути знову Alt+F5 і продовжити відладку наступних
операторів (з аналізом вікна регістрів).
Для повторного виконання програми треба її рестартувати, вибираємо пункт
Run - Program reset або натиснути CTRL+F2.
Можна змінювати вміст регістрів. Для цього потрібно вікно зробити активним,
натиснути Alt+F10 (можна виконати операції інкремент, дикремент або обнулити,
або ввести своє значення).

У вікні Breakpoints виводяться встановлені точки зупинки. Точка зупинки


визначає те місце у програмі, де буде зупинено виконання програми. Перед
виконанням програми для встановлення точок переривань треба перейти в
потрібний рядок програми та натиснути клавішу F2 (щоб вилучити точку знову
натиснути цю клавішу). Рядок з контрольною точкою буде підсвічуватися червоним
кольором.

На скріншоті рядок, що підсвічується червоним має точку зупинки.

6
У вікні Stack виводиться поточний стан стека. При цьому внизу зазначені
найперші виклики функцій, а потім наступні виклики.

Можна змінити (ввести) дані у вигляді символів, слів у області пам'яті(Dump).

Можна вибрати формат відображення інформації у вікні дампу (байт,


слово……)

7
Виконуємо програму, за допомогою Alt+F5 переходимо у середовище DOS
для перевірки результату роботи програми.

В результаті вивелось NACHINAEM!!

You might also like