Реферат: Турбо отладчик (Turbo Debugger)

Доклад

натему: Турбо отладчик (Turbo Debugger)


Отладка- это процесс нахождения и исправления ошибок в программе. Нет ничегонеобычного в том, что поначалу поиск и устранение ошибок занимают большевремени, чем написание программы.

Отладкане является точной наукой. Часто лучшее средство отладки находится в голове упрограммиста. Тем не менее, систематический метод отладки может дать некоторыепреимущества.

Процессотладки в общем случае можно разделить на четыре этапа:

1.Обнаружение ошибки.

2.Поиск ее местонахождения.

3.Определение причины ошибки.

4.Исправление ошибки.

Окна Турбо отладчика

Сегоднямногие программные продукты работают с окнами, но Турбо отладчик делает этолучше. Турбо отладчик выводит в меню (локальных и глобальных) всю информацию иданные, работает с диалоговыми окнами (которые используются для задания иливвода информации) и другими окнами. В Турбо отладчике используется множество различныхтипов окон. Тип окна зависит от того, какого рода информацию он содержит.Открывать и закрывать все окна можно с помощью команд меню (или соответствующихим сокращений — оперативных клавиш). Большинство окон Турбо отладчика (15 типовокон) выводятся из меню View (Обзор). Другой класс окон, который называется окнамипроверки (Inspector), выводится при выборе элемента меню Data│Inspect (Данные│Проверка)или команды локального меню Inspect.


Окна меню View

Перечислимтипы окон, которые вы можете открыть из меню View(Обзор).

┌────────────────────┐

Точкиостанова │ Breakpoints│

Стек│ Stack │

Регистрация│ Log │

Выраженияпросмотра │ Watches │

Переменные│ Variables │

Модуль│ Module… F3 │

Файл│ File… │

ЦП│ CPU│

Дамп│ Dump│

Регистры│ Registers│

Сопроцессор│ Numeric processor │

Протоколвыполнения│ Execution history │

Иерархия│ Hierarchy │

СообщенияWindows │ Windows messages │

«Карман»│ Clipboard│

Другое│ Another>│

└────────────────────┘

Когдавы открываете одно (или более) из этих окон, их можно перемещать, менятьразмер, закрывать и выполнять другие операции с помощью команд меню Window(Окно) и Ё (System — Система), о которых рассказывается в разделе «Работас окнами».


Окно Module

Вокне Module(Модуль)на экран выводится код отлаживаемой программы. Вы можете перемещаться по этомумодулю и просматривать данные и код, позиционирую курсор на именах переменныхпрограммы и давая соответствующие команды локальных меню.

Вокне Module вы вероятно будете проводить больше времени, чем в окнах другихтипов, поэтому стоит потратить время и изучить различные команды локальныхменю, доступных для этого типа окна.

Длятого, чтобы открыть окно Module, можно также нажать клавишу F3.

Окно Wathes

Вокне Wathes (Просмотр), котороеназывают также окном наблюдения, выводятся переменные и их изменяющиеся значения.Нажав клавиши Ctrl-W при позиционировании курсора на имени переменной вокнеModule (Модуль), вы можете добавить в окно Watches новую пе ременную.

Окно Breakpoints

Вокне Breakpoints(Точки останова) выводятся установленные вами точки останова. Точка остановаопределяет то место в вашей программе, где остановлено выполнение программы. Приэтом вы мо жете проверить состояние программы. В левой области окнаперечисляются позиции в программе каждой точки останова (или показано, что этоглобальная точка останова). В правой области данного окна показаны условия, прикоторых срабатывает текущая (подсвеченная) точка останова.

Используйтеданное окно для изменения, удаления или добавления точек останова.

Окно Stack

Вокне Stack (Стек) выводится текущее состояние стека. При этом внизу указанысамые первые вызовы функций (в программах на языке Си и C++ это функция main),а затем — все последующие вызовы в том порядке, как они выполнялись.

Выможете проверить исходный код любой указанной в стеке функции, переведя на нееподсветку и нажав клавиши Ctrl-I.

Подсветивимя функции в стеке и нажав клавиши Ctrl-I, вы открываете окно Variables(Переменные), в котором выводятся переменные, глобальные относительнопрограммы, переменные, локальные относительно функции, и аргументы вызовафункции.

Окно Log

Вокне Log (Регистрация) выводится содержимое протокола (списка) регистрациисообщений. Протокол содержит пролистываемый список сообщений и информацию,сгенерированную при вашей работе с Турбо отладчиком. Там сообщается, например,о том, почему остановилась ваша программа, о результатах срабатывания точекостанова и содержимом окон, которые вы сохранили в протоколе регистрации.

ОкноLog можно использовать для получения информации об использовании памяти имодулях прикладной программы Windows.

Данноеокно позволяет вам вернуться назад и посмотреть, что привело к текущемусостоянию.

Окно Variables

Вокне Variables (Переменные)выводятся переменные, доступные в данной точке вашей программы. В верхнейобласти окна содержатся глобальные переменные. В нижней области показаны переменные,локальные по отношению к текущей функции или модулю (если они есть).

Данноеокно полезно использовать, когда вы хотите найти функцию или переменную изнаете, с каких символов начинается ее имя (например, «abc»), но непомните точного имени. Вы можете войти в область глобальных идентификаторовданного окна и быстро найти то, что вам требуется.

Окно File

Вокне File (Файл) выводится содержимое файла на диске. Вы можете просматриватьсодержимое файла в виде непосредственных шестнадцатиричных байт или в виде кодаASCII (текстовый вид). Вы можете выполнить поиск конкретного текста илипоследовательности байтов, а также непосредственно скорректировать любую частьфайла на диске.

Этосредство полезно использовать, если вы отлаживаете программу, использующуюфайлы на диске, и хотите изменить содержимое программы, изменив содержимоеодного из ее файлов. Можно также исправить ошибку в содержимом файла, либопроверить файл, созданный программой, чтобы убедиться в правильности егосодержимого.

Окно CPU

ОкноCPU (ЦП) показывает текущее состояние центрального процессора (ЦП). Это окносодержит пять областей, в одной из которых показаны шестнадцатиричные байтыданных, в другой выводится в непосредственном виде (шестнадцатиричные байты)содержимое стека, в третьей — содержимое регистров ЦП, в четвертой — машинныеинструкции, а в пятой — содержимое флагов ЦП.

Есливы используете TDW, то в окне CPU выводится шестая область, в которойпоказываются селекторы памяти защищенного режима.

ОкноCPU полезно использовать, когда вы хотите просмотреть точную последовательностьинструкций, которую образует строка исходного кода программы, или структуруданных. Если вы знакомы с кодом Ассемблера, это может помочь вам выявить трудноуловимыеошибки. Однако для отладки большинства программ данное окно вам непонадобиться.

ИногдаТурбо отладчик открывает окно CPU автоматически, если ваша программаостанавливается на инструкции в середине строки исходного кода.

Окно CPU

ОкноCPU (ЦП) показывает текущее состояние центрального процессора (ЦП). Это окносодержит пять областей, в одной из которых показаны шестнадцатиричные байтыданных, в другой выводится в непосредственном виде (шестнадцатиричные байты)содержимое стека, в третьей — содержимое регистров ЦП, в четвертой — машинныеинструкции, а в пятой — содержимое флагов ЦП.

Есливы используете TDW, то в окне CPU выводится шестая область, в которойпоказываются селекторы памяти защищенного режима.

ОкноCPU полезно использовать, когда вы хотите просмотреть точную последовательностьинструкций, которую образует строка исходного кода программы, или структуруданных. Если вы знакомы с кодом Ассемблера, это может помочь вам выявитьтрудноуловимые ошибки. Однако для отладки большинства программ данное окно вам непонадобиться.

ИногдаТурбо отладчик открывает окно CPU автоматически, если ваша программаостанавливается на инструкции в середине строки исходного кода.


Окно Registers

Вокне Registers (Регистры) выводится содержимое регистров и флагов процессора(ЦП). Данное окно содержит две области, которые эквивалентны областям регистрови флагов окна CPU (ЦП). Это окно можно использовать, когда вам нужнопросмотреть содержимое регистров, и вас не интересует прочая информация осостоянии центрального процессора. Значение любого регистра или флага можноизменить с помощью команды локального меню.

Окно NumericProcessor

Вокне NumericProcessor (Арифметическийсопроцессор) выводится текущее состояние арифметического сопроцессора. Это окносодержит три области. В одной из областей показывается содержимое регистров сплавающей точкой, в другом выводятся значения флага состояния, а в третьей — значения управляющих флагов.

Данноеокно может помочь вам выявить ошибки в программе, работающей с числами с плавающейточкой. Вы должны иметь углубленное представление о внутренней работематематического сопроцессора. Только в этом случае данное окно принесет вампользу.

Окно ExecutionHistory

Вокне ExecutionHistory (Протокол выполнения)выводится код Ассемблера и и исходные строки вашей программы, вплоть допоследней выполняемой строки. Верхняя область содержит выполненный код Ассемблера(вы можете пройти его повторно). В нижней области выводится следующее:

1.Выполняете вы трассировку или выполнение по шагам.

2.Строка исходного кода для следующей выполняемой инструкции.

3.Номер строки исходного кода.

Выможете анализировать содержимое данного окна или использовать его длявыполнения вашей программы до конкретной точки.

Окно Hierarchy

Вокне Hierarchy (Иерархия) выводится дерево иерархии всех объектов или типовклассов, используемых в текущем модуле. Окно содержит две области. Одна областьиспользуется для вывода списка типов объектов/классов. Другая — для выводадерева иерархии объектов/классов. (Если вы выполняете отладку программ на языкеС++ с множественным наследованием, то открывается также третье окно, гдепоказывается порождающий класс для данного типа классов.)

Данноеокно показывает вам взаимосвязь объектов или классов, используемых в текущеммодуле. Оно также позволяет вам проверить любой объект или тип класса, а такжеявляющиеся его компонентами поля данных или элементы и методы илифункции-элементы (для этого используются команды локального меню).

ОкносообщенийWindows (Windows Messages)

Этоокно выводит список сообщений, передаваемых между окнами в вашей прикладнойпрограмме для Microsoft Windows. Это окно имеет три области:

— левая область показывает, для каких процедур или логических номеров выотслеживаете сообщения;

— правая область показывает тип отслеживаемых сообщений.

— в нижней области отображаются сами сообщения.


Окно Clipboard

Вэтом окне выводятся элементы, которые забраны в буфер вырезанного изображения(«карман»), показаны их типы. Это позволяет проверить или удалитьэлемент и сохранить в «кармане» любое значение элемента.

Подготовка программ Турбо Ассемблера

Прииспользовании Турбо Ассемблера для получения полной информации для отладкизадайте параметр командной строки /zi.

Прикомпоновке вашей программы с помощью компоновщика TLINK, используйте параметр/v для добавления в конец выполняемого файла .EXE информации для отладки.

Команды, доступные из основного меню

Основноеменю (строку меню) можно вызвать с помощью клавиши F10. После этого вы можетеперейти на одно из меню:

— переместив курсор на заголовок меню и нажав клавишу Enter;

— нажав первую буквы подсвеченного элемента (пункта) меню.

Крометого, можно открыть меню непосредственно (не перемещаясь сначала к заголовкуменю), нажав клавишу Alt в сочетании с первой буквой имени нужного меню.

Меню Ё (системное меню)

 ┌───────────────────────┬───────────────────────────────────────┐

 ││ │

 │RepaintDesktop │Повторно выводит весь экран. │

 │(Изобразитьэкран) │ │

 ││ │

 ├───────────────────────┼───────────────────────────────────────┤

 ││ │

 │RestoreStandard │Восстанавливает стандартную схему окон.│

 │(Восстановитьстандарт)│ │

 ││ │

 ├───────────────────────┼───────────────────────────────────────┤

 ││ │

 │About(О Турбо отлад- │Выводит информацию о Турбо отладчике. │

 │чике)│ │

 ││ │

 └───────────────────────┴───────────────────────────────────────┘

 МенюFile (Файл)

 ┌─────────────────────┬─────────────────────────────────────────┐

 ││ │

 │Open(Открытие) │ Открывает новую программу для отладки. │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │ChangeDir (Смена │ Выполняет переход на новый диск или в │

 │каталога)│ новый каталог. │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │GetInfo (Получение │ Выводит на экран информацию о программе.│

 │информации)│ │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │Resident(Резидент- │ Приводит к тому, что Турбо отладчик за-│

 │ный)│ вершит работу и останется резидентным в│

 ││ памяти. │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │SymbolLoad (Загруз- │ Загружает таблицу идентификаторов, │

 │катаблицы идентифи- │ независимую от файла .EXE. │

 │каторов)│ │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │TableRelocate (Пе- │ Задает значение базового сегмента табли-│

 │ремещениетаблицы) │ цы идентификаторов. │

 ││ │

 ├─────────────────────┼─────────────────────────────────────────┤

 ││ │

 │Quit(Выход) │ Возвращает вас в DOS. │ │ │ │

 └─────────────────────┴─────────────────────────────────────────┘

Меню Edit (Редактирование)

 ┌───────────────────────┬───────────────────────────────────────┐

 ││ │

 │Copy(Копирование) │Копирует элемент в карман (Clipboard). │

 ││ │

 ├───────────────────────┼───────────────────────────────────────┤

 ││ │

 │Paste(Вставка) │Вставляет элемент из кармана в окно или│

 ││в диалоговую подсказку. │

 ││ │

 ├───────────────────────┼───────────────────────────────────────┤

 ││ │

 │Copyto Log (Копирова- │Копирует подсвеченный элемент или эле- │

 │ниев окно Log) │мент в точке расположения курсора в │

 ││окно Log. │

 ││ │

 └───────────────────────┴───────────────────────────────────────┘

Меню View (Обзор)

 ┌────────────────────┬──────────────────────────────────────────┐

 ││ │

 │Breakpoints(Точки │Просмотр точек останова. │

 │останова)│ │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Stack(Стек) │Просмотр стека вызовов функций. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Log(Регистрация) │Просмотр журнала регистрации событий и │

 ││данных. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Watches(Выражения │Просмотр наблюдаемых переменных. │

 │просмотра)│ │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Variables(Перемен- │Просмотр глобальных и локальных перемен- │

 │ные)│ных. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Module(Модуль) │Просмотр исходного модуля программы. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │File(Файл) │Просмотр содержимого файла на диске в │

 ││коде ASCII или в шестнадцатиричном виде. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │CPU(ЦП) │Просмотр инструкций, данных и стека │

 ││центрального процессора. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Dump(Дамп) │Просмотр дампа данных в непосредственном │

 ││виде. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Registers(Регистры)│Просмотр регистров и флагов процессора. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │NumericProcessor │Просмотр сопроцессора или эмулятора. │

 │(Арифметический│ │

 │сопроцессор)│ │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │ExecutionHistory │Выводит код Ассемблера, сохраненный для │

 │(Протоколвыполне- │обратной трассировки или повторного │

 │ния)│выполнения нажатий клавиш. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Hierarchy(Иерархия)│Выводит список типов объектов или классов │

 ││и дерево иерархии. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Windowsmessages │Выводит список сообщений Windows для │

 │(CообщенияWindows) │одного или более окон в вашей прикладной │

 ││программе. │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Clipboard(Карман) │Выводит на экран окно Clipboard, в кото- │

 ││ров вы можете видеть элементы, скопиро- │

 ││ванные в буфер вырезанного изображения │

 ││(карман). │

 ││ │

 ├────────────────────┼──────────────────────────────────────────┤

 ││ │

 │Another(Другой...) │ │

 ││ │

 │Module │Создает другое окно Module (Модуль). │

 │Dump │Создает другое окно Dump (Дамп). │ │ File │Создаетдругое окно File (Файл). │

 ││ │

 └────────────────────┴──────────────────────────────────────────┘

Меню Run (Выполнение)

 ┌─────────────────────────────┬─────────────────────────────────┐

 ││ │

 │Run(Выполнение) │Запускает программу на выполнение│

 ││(без остановки). │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤│ │ │

 │GoTo Cursor (Переход к │Выполняет программу до текущего │

 │курсору)│места расположения курсора. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │TraceInto (Трассировка │Выполняет одну строку исходного │

 │вглубь)│кода или инструкцию. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │StepOver (Шаг с пропуском) │Выполняет трассировку с пропуском│

 ││трассировки вызовов подпрограмм. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │ExecuteTo (Выполнение до...)│Выполняет программу до заданного │

 ││адреса. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │UntilReturn (До возврата │Выполняет программу до возврата │

 │управления)│функцией. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │Animate(Автоматизировать) │Непрерывно выполняет программу по│

 ││шагам. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │BackTrace (Обратная трас- │Изменяет порядок выполнения прог-│

 │сировка)│раммы на обратный (по одной стро-│

 ││ке исходного кода или инструк-│

 ││ции). │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │InstructionTrace (Трасси- │Выполняет одну инструкцию. │

 │ровкаинструкций) │ │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │Arguments(Аргументы) │Выполняет одну инструкцию. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │ProgramReset (Сброс програм-│Выполняет перезагрузку текущей │

 │мы)│программы. │

 ││ │

 └─────────────────────────────┴─────────────────────────────────┘

 МенюBreakpoints (Точки останова)

 ┌────────────────────────────┬──────────────────────────────────┐

 ││ │

 │Toggle(Переключение) │ Переключает состояние точки │

 ││ останова в месте расположения │

 ││ курсора. │

 ││ │

 ├────────────────────────────┼──────────────────────────────────┤

 ││ │

 │At(На...) │ Устанавливает по заданному адресу│

 ││ точку останова. │

 ││ │

 ├────────────────────────────┼──────────────────────────────────┤

 ││ │

 │ChangedMemory Global │ Устанавливает глобальную точку │

 │(Изменениепамяти (глоб.)) │ для области памяти. │

 ││ │

 ├────────────────────────────┼──────────────────────────────────┤

 ││ │

 │ExpressionTrue Global │ Устанавливает глобальную точку │

 │(Выражениеистинно (глоб.)) │ для выражения. │

 ││ │

 ├────────────────────────────┼──────────────────────────────────┤

 ││ │

 │DeleteAll (Удалить все) │ Удаляет все точки останова. │

 ││ │

 └────────────────────────────┴──────────────────────────────────┘

 МенюData (Данные)

 ┌─────────────────────────────┬─────────────────────────────────┐

 ││ │

 │Inspect(Проверка) │ Проверяет объект данных. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │Evaluate/Modify(Вычисление/ │ Вычисляет выражение. │

 │Модификация)│ │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │AddWatch (Просмотр) │ Добавляет переменную в окно │

 ││ просмотра. │

 ││ │

 ├─────────────────────────────┼─────────────────────────────────┤

 ││ │

 │FunctionReturn (Возврат │ Проверяет значение, возвращаемое│

 │функции)│ текущей функцией. │

 ││ │

 └─────────────────────────────┴─────────────────────────────────┘


Параметры командной строки

 ─────────────────────────────────────────────────────────────────

Когдавы запускаете Турбо отладчик с помощью командной строки DOS, его можноодновременно настроить, используя для этого различные параметры. Общий форматкомандной строки имеет вид:

TD[параметры] [имя_программы [аргументы_программы] ]

Элементы,заключенные в квадратные скобки, являются необязательными. Если за параметромуказывается минус (-), то данный параметр запрещается (если он разрешен в файлеконфигурации).

 ┌───────────────────────────────────────────────────────────────┐

 │Параметр Функция │

 ├────────────┬──────────────────────────────────────────────────┤

 │-cимя_файла│ Файл конфигурации, активизирующийся при загрузке.│

 ││ │

 │-do│ Другой дисплей. │

 ││ │

 │-dp│ Переключение страниц. │

 ││ │

 │-ds│ Переключение на содержимое экрана пользователя. │

 ││ │

 │-h│ Вывод справочного экрана. │

 ││ │

 │-?│ Вывод справочного экрана. │

 ││ │

 │-i│ Обработка переключения идентификатора процесса. │

 ││ │

 │-k│ Разрешает запись нажатий клавиш. │

 ││ │

 │-l│ Запуск кода инициализации Ассемблера. │

 ││ │

 │-mN│ Размер динамически распределяемой области памяти.│

 ││ │

 │-p│ Разрешает работать с «мышью». │

 ││ │

 │-r│ Отладка на удаленных системах, COM1 (быстр.). │

 ││ │

 │-rnлок; удал│ Разрешает сетевую отладку. │

 ││ │

 │-rpN│ Порт COM для удаленной связи. │

 ││ │

 │-rsN│ Скорость связи: 1 — медленная, 2 — средняя, 3 — │

 ││ быстрая. │

 ││ │

 │-sdкаталог│ Каталог исходного файла. │

 ││ │

 │-sc│ Отмена проверки на строчные/прописные буквы. │

 ││ │

 │-smN│ Задает объем памяти для таблицы идентификаторов │

 ││ (в килобайтах). │

 ││ │

 │-vn│ Запрещение режима 43/50 строк. │

 ││ │

 │-vg│ Полное сохранение графики. │

 ││ │

 │-vp│ Сохранение палитры EGA. │

 ││ │

 │-yN│ Задает размер оверлейного буфера. │

 ││ │

 │-yeN│ Устанавливает оверлейную область EMS в значение │

 ││ N (N страниц по 16 килобайт). │

 └────────────┴──────────────────────────────────────────────────┘

еще рефераты
Еще работы по информатике, программированию