Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сабуров С.В. - Язык программирования C и C++ - 2006

.pdf
Скачиваний:
312
Добавлен:
13.08.2013
Размер:
1.42 Mб
Скачать

Отладчик Turbo Debugger

При вставке элементов из буфера Clipboard их тип должен соответствовать типу поля ввода. SpeedMenu окна Clipboard содержит следующие команды:

Inspect

Позиционирует курсор в то окно, из которого был извлечен элемент.

Remove

Удаляет подсвеченный элемент или элементы. Тот же эффект для подсвеченного элемента имеет клавиша Del.

Delete all

Удаляет все в буфере Clipboard.

Freeze

Приостанавливает динамическое обновление элемента

Clipboard.

Текстовое окно Get Info

Вы можете выбрать команду File Get Info для анализа использования памяти и определения того, почему получил управление отладчик. Эта и другая информация отображается в текстовом блоке, который удаляется с экрана при нажатии клавиши Enter, пробела или Esc. В этом окне отображается следующая информация, в зависимости от того, отлаживаетесь ли вы в DOS, или в Windows.

Если вы отлаживаете программу для DOS, то в блоке System Information будет выведена следующая информация:

имя отлаживаемой вами программы;

описание причины остановки программы;

объемы памяти, используемой DOS, отладчиком и вашей программой;

версия DOS или Windows, под управлением которой вы работаете;

текущая дата и время.

277

Отладчик Turbo Debugger

TDW дает вам следующую информацию о глобальной памяти:

Mode (режим)

Режимами памяти могут быть:

Large frame EMS (EMS память с большим размером страничного блока)

Small frame EMS (EMS память с малым размером страничного блока)

non EMS (дополнительная память).

Banked (банкируемая)

Объем памяти в килобайтах выше линии банка EMS (которая может быть откачана в расширенную память, если ее

использует система).

Not Banked (не банкируемая)

Объем памяти в килобайтах ниже линии банка EMS (которая не может быть откачана в расширенную память).

Largest (наибольший)

Наибольший непрерывный блок памяти в килобайтах.

Symbols (идентификаторы)

Объем оперативной памяти, используемый для загрузки таблицы идентификаторов программы.

Кроме перечисленной выше информации окно Windows System Information для Windows NT содержит также следующую информацию:

Memory Load Factor (процент используемой оперативной памяти)

Physical (доступный и общий объем системной памяти)

Page file (размер текущего страничного файла и максимальный размер)

Virtual (общая и доступная виртуальная память).

Команда Attach

Эта команда позволяет подключить TD32 к процессу, работающему под Windows NT. Ее полезно использовать, когда вы знаете, где в программе возникают ошибки, но вам трудно

278

Отладчик Turbo Debugger

воспроизвести ситуацию в отладчике. Команда открывает диалоговое окно Attach to and Debug a Running Process. Для подключения к выполняемому процессу сделайте следующее:

Запустите процесс, который нужно отладить.

Запустите TD32.

Выберите команду File Change Dir для перехода в каталог выполняющегося процесса.

Выберите команду File Attach для открытия диалогового окна.

Включите или выключите кнопку с независимой фиксацией Stop an Attach. При ее включении Turbo Debugger приостанавливает выполнение процесса при подключении к нему.

В блоке списка Processes выберите процесс (или введите идентификационный номер процесса в поле ввода Process ID). Затем щелкните «мышью» на OK.

Если процесс содержит информацию об отладке, и Turbo Debugger может найти исходный код, открывается окно Module. В противном случае открывается окно CPU. После этого вы можете использовать отладчик и отлаживать процесс как обычно.

Команда OS Shell

Эта команда отладчика TD32 работает в операционной системе Windows NT. По этой команде Turbo Debugger открывает командную подсказку. Для возврата в отладчик наберите Exit.

Получение справочной информации

Turbo Debugger предлагает несколько способов получения в ходе отладки справочной информации. С помощью клавиши F1 вы можете получить доступ к развитой контекстной справочной системе. По данной клавише на экран выводится список тем, из которых вы можете выбрать необходимую.

Индикатор активности в левом правом углу экрана всегда показывает текущее состояние. Например, если курсор находится

вокне, в индикаторе активности выводится READY. Если выводится меню, в нем указывается MENU, а если вы находитесь

вдиалоговом окне — PROMPT. Если вы, запутаетесь и не можете

279

Отладчик Turbo Debugger

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

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

Оперативная помощь

В отладчик встроен контекстно зависимый оперативный справочник. Он доступен как при работе в системе меню, так и при выводе сообщения об ошибке или подсказки. Для вывода справочного экрана с информацией, относящийся к текущему контексту (окну или меню) нажмите клавишу F1. При наличие «мыши» вы можете вывести справочный экран, выбрав F1 в строке состояния. Некоторые справочные экраны содержат подсвеченные слова, которые позволяют вам получить дополнительную информацию по данной теме. Для перемещения к нужным ключевым словам используйте клавиши Tab или Shift+Tab и нажмите клавишу Enter. Для перемещения к первому или последнему слову на экране используйте клавиши Home и End. Доступ к оперативным справочным средствам можно получить также с помощью команды Help из строки меню (оперативные клавиши Alt+H).

Если вы хотите вернуться к предыдущему справочному экрану, нажмите клавиши Alt+F1 или выберите команду Previous из меню Help. В справочной системе для просмотра последних 20 экранов можно пользоваться клавишей PgUp (клавиша PgDn работает, когда вы находитесь в группе связанных экранов). Для доступа к индексному указателю справочной системы нажмите Shift+F1 (или F1 в справочной системе) или выберите команду Index в меню Help. Для получения информации о самой справочной системе выберите в меню Help команду Help Help. Для выхода из справочной системы нажмите клавишу Esc.

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

280

Отладчик Turbo Debugger

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

В Turbo Debugger понятие точки останова включает в себя три следующих элемента:

место в программе (адрес), где находится точка останова;

условие, при котором она срабатывает;

что происходит, когда срабатывает точка останова (действие).

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

всегда;

когда выражение принимает истинное значение;

когда объекты данных изменяют свое значение.

Можно также задавать «счетчик проходов», который определяет, чтобы прежде чем сработает точка останова, «условие» должно принимать истинное значение определенное число раз.

При достижении точки останова может выполняться следующее действие:

приостановка выполнения программы;

регистрация значения выражения;

выполнение выражения;

разрешение группы точек останова;

запрещение группы точек останова.

Обычно точка останова устанавливается на конкретной исходной строке или машинной инструкции программы. Когда программа достигает точки останова, Turbo Debugger вычисляет ее. Однако точки останова могут быть и глобальными. Глобальные точки останова вычисляются отладчиком после выполнения каждой строки исходного кода или инструкции. Это позволяет определить момент модификации переменной или указателя.

281

Отладчик Turbo Debugger

Когда программа доходит до точки останова, Turbo Debugger проверяет условия точки останова и проверяет истинность заданного условия. Если условие выполняется, точка останова срабатывает. Такая точка останова называется условной.

Окно Breakpoints

Создать окно точек останова Breakpoints можно с помощью команды View Breakpoints основного меню. Это дает вам способ выбора и установки условий, при которых срабатывает точка останова. Это окно можно использовать для добавления новых точек останова, отмены (удаления) точек останова и изменения существующих точек останова.

[*] Breakpoints

TCDEMO.220

Breakpoint

TCDEMO.225

Always

TCDEMO.226

Enabled

В левой области этого окна показан список всех адресов, где установлены точки останова. В правой области показаны подробные данные по текущим (подсвеченным в левой области) точкам останова.

Локальное меню SpeedMenu окна Breakpoints можно получить по нажатию клавиш Alt+F10. Команды данного меню позволяют вам добавлять новые точки останова, отменять существующие или изменять характер поведения имеющихся точек останова.

Установка простых точек останова

Когда вы впервые устанавливаете точку останова, Turbo Debugger создает по умолчанию простую точку останова. При достижении такой точки останова программа всегда приостанавливает выполнение. Чтобы выполнить программу до точки останова, нажмите F9.

Простейшие методы установки простых точек останова предлагают окно Module и область Code окна CPU.

Если вы работаете с клавиатурой, поместите курсор на любую выполняемую строку исходного кода или инструкцию в области кода окна CPU и нажмите F2. То же самое можно сделать с помощью команды Breakpoint Toggle. После установки точки

282

Отладчик Turbo Debugger

останова соответствующая строка становится красной. Для отмены точки останова нажмите F2.

При работе с «мышью» вы можете установить точку останова, щелкнув на двух левых столбцах нужной строки. Повторный щелчок «мышью» отменяет точку останова.

Кроме того, команда Breakpoinr At (Alt+F2) позволяет установить простую точку останова на текущей строке. Кроме того, эта команда открывает диалоговое окно Breakpoint Options, которое предоставляет быстрый доступ к командам настройки точки останова.

Кроме установки точке останова из окон Module и CPU, Turbo Debugger предлагает для установки точек останова следующие команды. Чтобы установить простые точки останова на точках входа во все функции текущего загруженного модуля или все функции элементы класса, используйте команду Group локального меню окна Breakpoints. Команда Add этого же меню также устанавливает точки останова. Она открывает диалоговое окно Breakpoint Options и позиционирует курсор на пустое поле ввода Address, где вы можете ввести адрес или номер строки.

После установки точки останова вы можете модифицировать действие, выполняемое по ее активизации. По умолчанию это «Break» — Turbo Debugger приостанавливает выполнение программы.

Установка условных точек останова

Эти точки останова также устанавливаются по конкретному адресу в программе, однако имеют специальные условия и связанные и ними действия.

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

Установите простую точку останова (как описано выше).

Откройте диалоговое окно Conditions and Actions.

Откройте окно точке останова и подсветите в области List нужную точку останова.

283

Отладчик Turbo Debugger

Выберите в SpeedMenu команду Set Options. Выводится диалоговое окно Breakpoint Options. Это окно содержит команды, позволяющие модифицировать параметры точек останова. Текущие параметры выбранной точки останова выводятся в блоке списка Conditions and Actions&

Чтобы модифицировать условие точки останова и выполняемые по ней действия, щелкните «мышью» на командной кнопке Change. Выводимое окно Conditions and Actions позволяет вам настроить условия срабатывания точки останова и выполняемые по ней действия.

Выберите кнопку с зависимой фиксацией Expression True. По умолчанию условие точек останова устанавливается в Always, то есть они срабатывают каждый раз при обнаружении их в программе. Щелчок «мышью» на кнопке с зависимой фиксацией Expression True задает активизацию точки останова только после того, как заданное вами выражение станет истинным.

В поле ввода Condition Expression введите выражение. Оно будет вычисляться при каждом обнаружении точки останова.

Если нужно, задайте для точки останова счетчик проходов Pass Count. Это поле определяет, сколько раз должно удовлетворяться условие точки останова, прежде чем точка останова будет активизирована. По умолчанию он равен 1. Значение счетчика уменьшается при каждом удовлетворении условия.

Если вы хотите изменить выполняемое по умолчанию в точке останова действие, щелкните «мышью» на нужно кнопке с зависимой фиксацией группы Action.

Для выхода из окна щелкните «мышью» на OK или нажмите Esc.

Установка точек останова по изменению памяти

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

284

Отладчик Turbo Debugger

останова нужно выполните те же шаги, что и перечисленные выше, но:

В диалоговом окне Conditions and Actions вместо Expression True щелкните «мышью» на кнопке с зависимой фиксацией Changed Memory.

В поле ввода Condition True введите выражение, при вычислении которого получается объект памяти или адрес.

Когда ваша программа обнаруживает строку с такой точкой останова, условное выражение вычисляется перед выполнением этой строки. Это нужно учитывать.

При вводе выражения вы можете также ввести счетчик числа отслеживаемых объектов. Общее число отслеживаемых байт памяти равно произведению размеру объекта, на которое ссылается выражение, на счетчик объекта.

Установка глобальных точек останова

Эти точки останова являются по существую точками останова двух описанных выше типов, но отслеживаются они непрерывно в течении всего периода выполнения программы. Так как Turbo Debugger проверяет такие точки останова после выполнения каждой инструкции или строки исходного кода, они являются превосходным инструментом выявления того места в программе, где происходит порча данных.

Чтобы создать глобальную точку останова, установите сначала условную точку останова или точку останова по изменению памяти (как описано выше), затем после выхода из окна Conditions and Actions включите кнопку с зависимой фиксацией Global диалогового окна Breakpoint Options.

Поскольку глобальные точки останова не связываются с конкретными адресами программы, в поле ввода Address

диалогового окна Breakpoint Options выводится <not available>.

Чтобы глобальная точка останова проверялась после выполнения каждой машинной инструкции, а не каждой строки исходного кода, в активном окне CPU нажмите F9. Эти точки останова сильно замедляют выполнение программы, поэтому использовать их нужно умеренно. Кроме того, для них не рекомендуется задавать условие «Always».

285

Отладчик Turbo Debugger

Меню Breakpoint содержит команды для быстрой установки глобальных точек останова: Changed Memory Global и Expression True Global. При этом по умолчанию выбирается действие «Break». Changed Memory Global устанавливает глобальную точку останова, активизируемую при изменении значения в памяти. Эта команда выводит подсказку для задания соответствующей области памяти Enter Memory Address и поле счетчика Count. Expression True Global устанавливает точку останова, срабатывающую при истинном значении заданного выражения.

Аппаратные точки останова

Эти точки останова доступны в TDW и TD32 при отладке программ Windows NT. Они используют специальные отладочные регистры процессоров Intel 80386 и старше. Эти точки останова являются глобальными. Для работы с этими точками останова вам потребуется драйвер TDDEBUG.386. Скопируйте его с дистрибутивных диске и включите в файл CONFIG.SYS. (Инструкции содержатся в файле TD_HDWBP.TXT.) При правильной установке этого драйвера в поле Breakpoints диалогового окна File Get Info выводится Hardware (в противном случае — Software).

Чтобы установить аппаратную точку останова, выберите в меню Breakpoints команду Hardware Breakpoint. Эта команда автоматически устанавливает кнопку Global окна Breakpoint Options, кнопку Hardware в окне Conditions and Actions и открывает диалоговое окно Hardware Breakpoint Options. Это окно содержит все параметры аппаратных точек останова и полностью описано в файле TD_HDWBP.TXT.

Можно также создать аппаратную точку останова, модифицировав существующую точку останова:

Установите кнопку с независимой фиксацией Global в диалоговом окне Options.

Откройте диалоговое окно Conditions and Actions и выберите кнопку с зависимой фиксацией Hardware.

Чтобы открыть диалоговое окно Hardware Breakpoint Options, щелкните «мышью» на кнопке Hardware окна

Conditions and Actions.

Задайте параметры аппаратной точки останова и щелкните «мышью» на OK.

286

Соседние файлы в предмете Программирование на C++