Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
asm.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
913.41 Кб
Скачать

6. Застосування програми налагодження для пошуку помилок.

Створена програма мовою Асемблера, або іншою мовою програмування, не завжди зразу буде виконувати бажані дії, так як при програмуванні можуть бути допущенні логічні (семантичні) помилки. Для пошуку таких помилок у розроблені програмі, а також в програмі, що розробляється, використовують програми налагодження. В пакет Turbo Assembler входить програма налагодження Turbo Debugger.

Turbo Debugger - це програма налагодження, яка дозволяє налагоджувати програми на рівні вихідного тексту. Призначений для програмістів, які розробляють програми мовами асемблер, С, С++ та інших мовами програмування.

Turbo Debugger дозволяє знайти в програмі:

  • логічної місце помилки;

  • причину логічної помилки.

Програма налагодження Turbo Debugger має такі функції:

  • виконання трасування програми в прямому напрямку, тобто послідовне виконання програми, при якому за один крок виконується одна машинна команда;

  • виконання покрокове в прямому напрямку, при за один крок виконується одна машинна команда або підпрограма (функція);

  • виконання до вказаної точки в прямому напрямку;

  • виконання трасування програми в зворотному напрямку, коли програма виконується в зворотному напрямку також по одній машинні команді;

  • перегляд значень змінних, стан регістрів загального призначення, регістра ознак та апаратних ресурсів процесора під час по-командного виконання програми;

  • зміна значень змінних, регістрів загального призначення та ознак регістра ознак під час по-командного виконання програми.

Але, Turbo Debugger не дозволяє змінити сам код програму, тому що для цього необхідна нова трансляція і компонування програми.

Налагодження програми може бути здійснено за умов:

  • у вихідній програмі повинна бути обов'язково визначена мітка(головна процедура) для першої команди, з яким починається виконання програми. Ім'я цієї мітки необхідно вказати наприкінці програми в якості операнда директиви END;

  • вихідна програма повинна бути трансльована із опцією /zi, для того щоб зберегти імена в програмі. В противному випадку налагодження можна здійснювати тільки на рівні об’єктного коду. Командний рядок повинний мати вид:

tasm /zi ім'я_вихідного_модуля

  • компонування об'єктного модуля треба здійснити із вказівкою опції /v, яка вказує на необхідність збереження інформації налагодження у виконавчому файлі;

  • завантаження програми налагодження виконується з командного рядка:

td ім'я _виконавчого_модуля

Після завантаження Turbo Debugger відкривається вікно Module, у якому можна в бачити вихідний текст програми. У виді трикутника з'являється курсор виконання, що вказує на команду яка буде виконуватися, на початку - це точка входу в програму (тобто це мітка, або ім’я головної процедури, що задано в директиві END). Основну частину екрана займають кілька вікон, причому активним може бути тільки одне з них. Керування роботою Turbo Debugger ведеться за допомогою системи меню або гарячих клавіш. Є два типи таких меню:

  • глобальне меню - знаходиться у верхній частині екрана і доступно постійно; виклик цього меню здійснюється за допомогою клавіші F10. В подальшому вибирається потрібний пункт або підпункт меню.

  • локальне меню - для кожного вікна налагоджувача можна викликати його власне меню, що враховує особливості цього вікна. Викликати дане меню можна, клацнувши у вікні правою кнопкою миші.

Налагодженні програми здійснюється в таких режимах:

  • режим безумовного виконання всієї програми;

  • трасування та покрокове виконання;

  • виконання до поточного положення курсору, або до встановленої точки переривання.

Ці режими використовуються при наступних умовах.

  1. Режим безумовного виконання доцільно застосовувати, коли потрібно перевірити загальне виконання програми. Для цього необхідно натиснути клавішу F9.

  2. Трасування та покрокове виконання служить для детального вивчення поводження програми для спостереження дії кожної команди. Трасування(за один крок виконується одна машинна команда) здійснюється за допомогою клавіші F7. Покрокове виконання(за один крок виконується одна машинна команда або підпрограма, яка викликається командою асемблера CALL) здійснюється за допомогою клавіші F8. Результати виконання кожної команди можна переглянути у вікні CPU(процесор), яких можна викликати з глобального меню (пункт View\CPU). Це вікно складається з п'яти під-вікон:

    • вікна з вихідною програмою в дезасемблерному виді, тобто у виді набору машинних команд;

    • вікно регістрів процесора з їхній поточними станами;

    • вікно регістра ознак з поточним станом ознак;

    • вікно стека, що відображає вміст пам'яті стека. Адреса стека міститься в регістрах SS і SP.

    • вікно з дампом пам'яті (вмістом пам'яті), у якому відображається фрагмент пам’яті, у шістнадцятковому представленні.

  3. Виконання до поточного положення курсору дозволяє виконувати програми до вказаного місця програми . Цей режим доцільно використовувати у випадку, якщо інтерес представляє правильність роботи деякої ділянки програми. Для завантаження цього режиму необхідно установити курсор на потрібний рядок програми і натиснути клавішу F4. Програма почне виконання і зупиниться на відзначеній команді, не виконавши її.

  4. Виконання із встановленням точок переривання дозволяє виконати програму з зупинкою у визначеній заздалегідь точці ( breakpoint ) або визначених точках. Для установки точки переривання в потрібному місці необхідно натиснути клавішу F2, після чого обраний рядок буде виділена іншим кольором. Для вилучення точки переривання в обраному рядку потрібно також натиснути F2. Завантаження на виконання програми з точками переривання здійснюється клавішею F9. Зупинка відбувається на першій точці. Після перегляду результатів продовження виконання здійснюється також по натисканні F9. Можна перервати виконання програми в будь-якім місці натиснувши сполучення Ctrl+F2.

Приклад завантаження .

C:\Tasm> td.exe Begin1.exe

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]