Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
Звіт
до лабораторної роботи №3
з дисципліни «Операційні системи»
Тема «Технологія роботи з налагоджувачем TurboDebugger фірми Borland»
Варіант 12
КИЇВ-2022
Мета роботи : ознайомитися з технологією налагоджувача TD.
Порядок роботи :
Ознайомитися з етапами процесу налагодження програми.
Ознайомитися з можливостями TD.
Засвоїти типові операції (переміщення між вікнами налагоджувача, зміна вікон, покрокове виконання команд, внесення змін до даних оперативної пам’яті, внесення змін у вміст регістрів, внесення змін до стеку, встановлення контрольних точок).
Продемонструвати основні операції з налагодження на прикладі програми з лабораторної роботи № 2.
Короткий теоретичний опис
Процес налагодження програми зазвичай поділяється за чотири етапи :
Виявлення помилки.
Пошук її місцезнаходження.
Визначення причини помилки.
Виправлення помилки.
Турбо налагоджувач можна застосувати для вирішення двох основних проблем процесу налагодження : пошук місця знаходження помилки та причини її виникнення. Надається можливість тестування нових значень змінних, щоб відстежити їх вплив на роботу програми. Ці можливості реалізуються за допомогою трасування, покрокового виконання, перегляду, змін й простежування.
Трасування . Дозволяє виконувати програму по одному оператору.
Зворотне трасування . Ви можете виконати код у зворотному порядку.
Покрокове виконання . Ви можете виконувати програму по одному оператору, але пропускати виклики процедур і функцій.
Перегляд . Ви можете у Турбо налагоджувачі створити спеціальне вікно для показу всіляких речей - змінних, їхніх значень, точок зупинки, вмісту стека, файлів реєстрації, даних, файлів вихідних текстів, кодів ЦП, пам'яті, регістрів, інформації процесора, арифметики із плаваючою крапкою, виводу програми.
Перевірка . Ви можете у Турбо налагоджувачі одержати вміст складних структур даних з вашої програми.
Зміна . Можна змінити вміст змінної (як локальної, так і глобальної) на нове значення.
Простежування . Ви можете виділити деякі програмні змінні й простежувати зміну їхніх значень у процесі роботи програми.
Турбо налагоджувач запускається таким чином:
Td ім’я виконуваного файла.ехе
Демонстрація основних операції з налагодження на прикладі програми з лабораторної роботи № 2
Запуск турбоналагоджувача :
/
Такий вигляд має TD після запуску виконуваного файлу Lab2.exe :
/
Верхній рядок на скріншоті – це рядок меню команд. Щоб відкрити певний пункт головного меню можна натиснути Alt + перша буква елемента меню або натиснути F10 і мишкою вибрати наобхідний елемнет, також замість мишки, можна натиснути на першу букву пунку меню. Переміщення здійснюється за допомогою стрілок.
Нижній рядок – основні команди, які виконуються принатисканні клавіш F1-F10. До кожної команди є своя вказана клавіша.
Розглянемо вікно CPU, яке складається з 5 областей, вони наведені нижче :
Перша область, сегмент коду,містить машинні інструкції (вміст сегменту коду вихідної програми), тобто, CS:зсув інструкція та команда;
Друга область, сегмент даних (вікно дампу), відображає шістнадцятеричні байти даних : DS:зсув 16-річні байти;
Третя область, вікно регістрів, відображає вміст регістрів ЦП: 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.
Для того, щоб відкрити вікно TD на весь екран необхідно натиснути Alt+Enter, щоб повернутися до початкового стану потрібно знову натисніти Alt+Enter.
Щоб перейти назад в середовище DOS потрібно натиснути Alt+F5, повернутися до TD потрібно натиснути ту саму комбінацію клавіш.
Для виклику певного вікна натискаємо Alt+номер або F6-Next.
Для того, щоб вийти необхадно натиснути Alt+X.
Щоб відкрити додаткове меню для внутрішнього вікна процесора, натисніть Alt+F10.
Alt-F10 – відкриває для кожного внутрішнього вікна процесора додаткове меню.
/
Після запуску TD перше речення позначається значком ►, ця мітка відноситься до найпершої команди сегмента.Тому початкове значення покажчика команд дорівнює 0. Оскільки регістр IP зв’язаний з CS таким чином, CS:IP, тобто вказує на поточну інструкцію всередині поточного кодового сегмента. Отже значення IP постіййно змінюватиметься, а точніше зростатиме.
Команда F7 (trace,трасування) дозволяє виконати покрокове виконання тіла циклу, процедури або підпрограми обробки переривань, увійти в середину програм, що викликаються, а також виконати цикли крок за кроком.
Команда F8 (step, крок), навпаки, виконує підпрограми та цикли як одну нерозривну дію – звичайну команду, що значно прискорює покрокову відладку програми у випадку, коли користувач впевнений, що підпрограма виконується вірно. А можна виконати якийсь певний блок програми (декілька оператоів) відразу, для цього необхідно встановити курсор на тому реченні, до якого хочемо виконати програму, далі натискаємо F4.
Отже відладку програми можна виконати за допомогою трасування – F7 (заходить в кожний цикл, проходить крок за кроком) або ж за допомогою покрокового виконання - F8 (виконує програму не заходячи в цикли).
У вікні команд можна помітити такі команди add[bx+si],al. Ці команди створені самим відладчиком для того, щоб деасемблувати простір між CS і DS, який заповнений нулями. Код 0000h відповідає команді, яка наведена вище.
Зробимо покрокове виконання програми (F8) і дослідимо вміст регістрів :
/
Натискаємо F8.
/
Зверніть увагу, регістри, що зазнають змін підсвічені білим кольором.
/
Навпроти кожної нової виконуваної команди з’являється значок ►.
/
Бачимо, що регістр IP постійно зростає.
/
Під час покрокового виконання можна помітити, що значення регістру IP завжди співпадає зі значенням, навпроти поточної комади, після двокрапки, в області сегменту коду.
/
Це явище демонструє суть роботи цього регістра, він вказує на поточну команду в сегменті коду.
/
Також можна помітити, що під час виконання змінюються значення регістрів AX і DS.
/
Це пов’язано з тим,що ми завантажуємо туди певні дані (адреси).
/
Результати покрокового виконання.
Звернемо увагу на прапорець і – це прапорець переривань. Весь час покрокового проходу його значення було постійно рівним одиниці, після виконання програми значення стало рівним нулю.Встановлення цього прапорця в 1 призводить до того, що процесор перестає обробляти переривання від зовнішніх пристроїв. Зазвичай його встановлюють на короткий час для виконання критичних ділянок коду.
Результати роботи :
/
Код другої лабораторної роботи :
Title Lab2.asm
.model small
.data
text segment
assume CS:text, DS:data
begin:mov AX, data
mov DS, AX
mov AH, 09h
mov DX, offset mesg
int 21h
mov AH, 4Ch
mov Al, 0
int 21h
text ends
data segment
mesg db "NACHINAEM ! $"
data ends
stk segment stack
db 256 dup (0)
stk ends
end begin
Висновок
В ході виконання лабараторної роботи було розглянута технологія роботи налагоджувача TD.
Було засвоєно типові операції(переміщення між вікнами, покрокове виконання команд і тд.).Також було проаналізовано зміни в регістрах під час виконання покрокової відладки. Дослідження були реалізовані на основі коду другої лабораторної роботи.