ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 6 ГЛАВА 4 ЗАПУСК ОТЛАДЧИКА TURBO DEBUGGER В этой главе рассказано, как подготавливать программы к отладке, как запускать Turbo Debugger из командной строки DOS и как использовать ее многочисленные параметры командной строки при отладке программ. Объясняется, как сделать эти параметры постоянными, используя файл конфигурации. Вы также научитесь запускать командный процессор операционной системы DOS из отладчика и возвратиться в DOS после окончания отладки. Подготовка программ к отладке ----------------------------------------------------------------- При компиляции и компоновке программы одним из компиляторов семейства Turbo фирмы Borland необходимо, чтобы компилятор сформировал всю информацию, требующуюся для отладки. Если объектные модули программы уже были скомпилированы без такой информации, их необходимо перекомпилировать в режиме формирования полной информации для отладки всей программы на уровне исходного текста. Можно, конечно, сформировать отладочную информацию только для каких-то отдельных модулей, однако позже загрузка модулей, не имеющих отладочной информации, может доставить вам много неприятностей. Мы рекомендуем вам перекомпилировать все модули. Подготовка программ на языке Turbo C Если вы используете интегрированную среду Turbo ++C (TC), откройте блок диалога Debugger (выберите Options|Debugger) и установите селективную клавишу Source Debugging в положение Standalone, прежде чем компиоировать исходные модули. Для Turbo С 2.0 установите Debugg|Source в Standalone. Если вы используете автономный компилятор (TCC), задайте параметр -v командной строки. Если вы используете автономный компоновщик TLINK, вы должны задать параметр /v, чтобы добавить информацию для отладки в конец файла типа EXE. Возможно, вы также захотите убедиться в том, что запрещен режим оптимизации кода. Не используйте опцию -O или задайте параметр -O- в файле конфигурации TURBOC.CFG для выключения режима отимизации. Это предотвратит ситуации, когда Turbo Debugger будет перескакивать через несколько строк исходного текста при пошаговой отладке программы. Подготовка программ на языке Turbo Pascal Прежде всего, следует иметь в виду, что необходимо использовать версию 5.0 компилятора Turbo Pascal или более позднюю. В более ранних версиях не предусмотрена возможность добавлять отладочную информацию в файл типа EXE, так чтобы Turbo Debugger мог ее использовать. Если вы используете интегрированную среду (TURBO.EXE), вы должны вызвать меню Debug и установить ключ Standalone Debugging в состояние On (разрешена автономная отладка). Кроме того, установите ключ Options/Compiler/Debug Information в состояние On (включен режим формирования отладочной информации) или используйте директиву компилятора {$L+}. Если вы хотите иметь возможность ссылаться на локальные идентификаторы (описанные внутри процедур и функций), вы должны либо установить ключ Options/Compiler/Local Symbols в состояние On (формирование информации о локальных идентификаторах), либо поместить директиву компилятора в начало своей программы. После этого можно компилировать программу. Следующим образом, без пробелов: {$L+} Если вы пользуетесь версией компилятора, вызываемого из командной строки (TPC.EXE), вы должны скомпилировать программу, задав параметр /v командной строки. В этом режиме по умолчанию формируется как отладочная информация, так и информация о локальных идентификаторах. Если это не требуется, можно использовать параметр /$, который выключает этот режим. Подготовка программ на языке Turbo Assembler Если программа написана на языке Turbo Assembler, задайте параметр -zi командной строки, включающий режим формирования полной отладочной информации. При компоновке программы с помощью компоновщика TLINK используйте параметр /v для добавления отладочной информации в конец файла типа EXE. Подготовка программ на языке фирмы Microsoft На дистрибутивных дискетах приведена информация о том, как использовать утилиту TDCONVRT.EXE, которая выполняет преобразование исполняемых программ, написанных для отладки в системе CodeVeiw, в формат отладчика Turbo Debugger. Запуск программы Turbo Debugger ----------------------------------------------------------------- Для того чтобы запустить отладчик Turbo Debugger, следует в ответ на приглашение операционной системы DOS ввести с клавиатуры команду TD с необязательным набором аргументов командной строки, а затем нажать клавишу Enter. Turbo Debugger загрузит вашу программу и выведет ее исходный код таким образом, чтобы вы могли последовательно, оператор за оператором, наблюдать за ее выполнением. В общем виде командная строка для запуска отладчика имеет следующий вид: TD [параметры] [имя программы [аргументы программы]] Элементы, заключенные в квадратные скобки, являются необязательными; если вы будете использовать какие-либо параметры, вводите их без квадратных скобок. Имя программы - это название программы, которую требуется отладить. За именем программы могут стоять ее аргументы. Ниже приведено несколько примеров командной строки. ------------------------------------------------------------------ Команда Действие ------------------------------------------------------------------ td -sc prog1 a b Запускает отладчик с параметром -sc и загружает программу prog1 с двумя аргументами: a и b. td prog2 -x Запускает отладчик с параметрами, установленными по умолчанию, и загружает программу prog2 с одним аргументом -x. ------------------------------------------------------------------ Если просто ввести TD и нажать Enter, Turbo Debugger загрузит и будет использовать параметры, установленные в нем по умолчанию. Заметим, что при запуске отладчика Turbo Debugger необходимо иметь как файл типа EXE, так и исходные файлы с текстом программы. Turbo Debugger сначала ищет исходные файлы в той же директории, где находил их компилятор во время компиляции программы, затем в директории, заданной командой Options/Path for Source (маршрут для исходных файлов), затем в текущей директории, а затем в директории, где находится файл типа EXE. Прежде чем использовать отладчик Turbo Debugger, необходимо скомпилировать исходный текст программ в исполняемый файл (файл типа EXE) в режиме формирования полной отладочной информации. Для того чтобы отлаживать программу, написанную на одном из языков фирмы Borland, необходимо использовать Turbo Pascal версии 5.0 или более поздней, Turbo C версии 2.0 или более поздней, Turbo Assembler версии 1.0 или более поздней. Если вы запустили программу по приглашению DOS и заметили ошибку, нужно выйти из этой программы и загрузить ее в отладчике, что даст вам возможность ее отладки. Параметры командной строки ----------------------------------------------------------------- Все параметры командной строки начинаются с символа переноса (- ) и отделяются от команды TD и друг от друга как минимум одним пробелом. Для того чтобы отменить какой-либо параметр командной строки, надо поставить после него еще один символ переноса. Например, параметр -vg- отменяет режим сохранения полного графического образа вывода программы. Это можно сделать в том случае, если данный режим был установлен постоянно в файле конфигурации. Файл конфигурации можно изменить с помощью программы TDINST, описанной в приложении D. Доступный список параметров командной строки Turbo Debugger приводится в Приложении А. Ниже приведено описание всех допустимых параметров командной строки. Загрузка файла конфигурации (параметр -c) Задав этот параметр, можно загрузить указанный файл конфигурации. Между параметром -c и именем файла не должно быть пробела. Если параметр -c не задан, загружается файл TDCONFIG.TD, если он существует. Ниже приведен пример использования этого параметра. TD -cMYCONF.TD TCDEMO Эта команда загружает файл конфигурации MYCONF.TD и исходный текст программы TCDEMO. Параметры управления обновленим дисплея (-d) Эти параметры задают способ обновления изображения на экране. Параметр -do ------------ Запускает отладчик на втором мониторе. Вывод программы отображается на первом мониторе, а среда отладчика - на втором мониторе. Параметр -dp ------------ Параметр, используемый по умолчанию для цветных мониторов. Среда отладчика отображается на одной экранной странице, а вывод отлаживаемой программы - на другой, минимизируя время, необходимое для переключения между этими двумя экранами. Этот параметр можно использовать только на цветных мониторах, поскольку только у них имеется несколько экранных страниц. Этот параметр нельзя использовать в том случае, если сама отлаживаемая программа использует несколько экранных страниц. Этот параметр является умолчанием. Параметр -ds ------------ Параметр, используемый по умолчанию для монохромных дисплеев. Обеспечивает раздельное отображение среды отладчика и вывода отлаживаемой программы, загружая полный образ экрана из памяти при каждом возобновлении работы программы или перезапуске отладчика. Это самый медленный способ отображения двух экранных образов, но он основан на аппаратных средствах монитора и поддерживает программы, выполняющие необычный вывод на экран. Параметры получения помощи -h и -? Отображают на экране текст подсказки, описывающий назначение и синтаксис параметров командной строки отладчика Turbo Debugger. Параметр переключения идентификатора процесса (-i) Разрешает переключение идентификатора процесса. Не используйте этот параметр при отладке в среде ДОС и при использовании системных вызовов ДОС. Более подробная информация об этом параметре приведена в приложении В. При отладке большинства программ этот параметр не требуется. Параметр записи нажатий клавиш (-k) Позволяет запись нажатий клавиш в подокне Keystroke Recording окна Execution History. При использовании данной опции все вводимые вами нажаитя клавиш при отладке записываются в файл на диске. Потом вы имеете врзможность восстановить произвольный момент отладки, перезагрузив программу в оиладчик и врспроизведя записанную последовательность нажатий клавиш. Turbo Debugger записывает как нажатия клавиш при работе с Turbo Debugger, так и нажатия клавиш, относящиеся к работе программы. Запуск ассемблерного режима (-l) Запускает Turbo Debugger в режиме отладки на уровне ассемблера, отображая информацию о процессоре. При этом не выполняется код начальной загрузки, сформированный компилятором, который обычно выполняется при загрузке вашей программы в отладчик автоматически. Это означает возможность пошагового прохождения по коду начальной загрузки. Установка размера "кучи" (-m) Устанавливает размер рабочей динамической области равным n килобайт. Записывается в следующем виде: -mn где n - это число килобайт. Между параметром -m и размером динамической области не должно быть пробела. Пример использования этого параметра: TD -m10 TCDEMO По умолчанию размер динамической области равен 18К. Нижняя граница равна 7К. Если требуется память, можно использовать этот параметр для уменьшения размера динамической области, используемой отладчиком Turbo Debugger. При отладке небольших программ этот параметр можно использовать для увеличения размера динамической области. Это позволяет отладчику хранить промежуточную информацию, такую как списки введенных ранее команд. Примечание: Если с помощью параметра -m указать размер динамической области равный нулю (-m0), то Turbo Debugger будет использовать максимальный размер, равный обычно 18К. Поддержка мыши (-p) Данный параметр включает поддержку мыши. Однако, поскольку по умолчанию для Turbo Debugger поддержка мыши включена, -p не имеет значения, если только это умолчание не было изменено при помощи TDINST. отменить поддержку мыши можно при помощи -p-. Параметры удаленной отладки (r) Все параметры -r связаны с отладкой на удаленной системе. Параметр -r ----------- Разрешает производить отладку на удаленной системе, связанной по последовательному интерфейсу. По умолчанию используется последовательный порт COM1 и скорость передачи 115Кбод, если программой TDINST не заданы другие параметры. Параметр -rp N -------------- Устанавливает номер порта для отладки на удаленной системе. N может быть равно 1 или 2, задавая COM1 и COM2 соответственно. Параметр -rs N -------------- Устанавливает скорость передачи для отладки на удаленной системе. N может быть равно 1 (9600 бод), 2 (40 Кбод) или 3 (115 Кбод). Параметры обращения с исходным кодом (s) Эти параметры определяют способ обработки отладчиком Turbo Debugger исходного текста и идентификаторов программы. Параметр -sc ------------ Обрабатывает идентификаторы без учета регистра, даже если компоновка программы была выполнена с учетом регистра. Если параметр -sc не задан, Turbo Debugger будет обрабатывать текст программы без учета регистра только в том случае, если программа была скомпонована с включенным режимом учета регистра. Примечание: Этот параметр не влияет на отладку программы, написанной на языке Turbo Pascal (поскольку компилятор Turbo Pascal всегда обрабатывает исходный текст без учета регистра). Параметр -sd ------------ Задает одну или несколько директорий, в которых Turbo Debugger будет искать исходные файлы; записывается в следующем формате: -sd <имя директории> Для задания нескольких директорий следует использовать параметр -sd несколько раз; один параметр -sd может задавать только одну директорию. Директории будут просматриваться в указанном порядке. Имя директории может содержать как относительный, так и абсолютный маршрут, и может включать имя диска. Если в файле конфигурации уже заданы какие-либо директории для поиска исходных файлов, то директории, заданные с помощью параметра -sd, будут добавлены в конец списка. Параметр -smN -------------- Данный параметр устанавливает размер памяти, резервируемой для таблицы симврлических имен. За ним следует размер в килобайтах области резервируемой памяти: -smN где N - это число килобайт. Эта опция используется, если вы хотите загрузить таблицу символических имен вручную при помощи команды File|Symbol Table. Вы можете поэкспериментировать с размером резервируемой таким обазом памяти. Параметры видеоаппаратуры (-v) Эти параметры влияют на взаимодействие отладчика с аппаратными средствами управления отображением. Параметр -vg ------------ Сохраняет полный графический образ экрана выполнения программы. Требует дополнительно 8К памяти, но позволяет отлаживать программы, использующие некоторые графические режимы отображения. Попробуйте использовать этот параметр, если при отладке программы в системе Turbo Debugger портится формируемое ею графическое изображение. Параметр -vn ------------ Запрещает использование режима отображения 43/50 строк. Задание этого параметра экономит некоторое количество памяти. Задавайте его в том случае, если вы используете EGA или VGA-монитор и знаете, что во время работы с отладчиком вам не потребуется переходить в режим 43/50 строк. Параметр -vp ------------ Разрешает сохранение палитры EGA. Параметры размера оверлейного пула (-y) Опции -y используются для установки размера оверлейного пула, как в основной памяти так и в расширенной (EMS) памяти. Параметр -yN ------------ Данный параметр устанавливает размер оверлейного пула в основной памяти. Синтаксис этого параметра следующий: -yN где N - это размер пула в килобайтах. Обычно Turbo Debugger использует размер пула 80К. Минимальный размер пула 20К, а максимальный 200К. Для установки размера постоянного оверлейного пула используется TDINST. Данный параметр используется в тех случаях, когда не хватает памяти для загрузки программы в Turbo Debugger, либо при отладке небольших программ, для улучшения характеристик Turbo Debugger. Чем меньше размер пула, тем чаще Turbo Debugger выполняет загрузку оверлеев с диска, и тем медленнее работает. При большем размере пула меньше остается памяти для отлажтваемой программы, но Turbo Debugger работает быстрее. Параметр -yeN ------------- Данный параметр устанавливает размер оверлейного пула в расширенной (EMS) памяти. Эта опция используется для освобождения части EMS-памяти для отлаживаемой программы. Синтаксис этого параметра следующий: -yeN где N - это число страниц EMS-памяти по 16К, которое вы желаете зарезирвировать. Например, -ye4 резервирует пул размером в 4 страницы. По умолчанию устанавливается размер пула в двенадцать 16К-байтовых страниц EMS-памяти. Для отмены оверлейного пула EMS служит параметр -ye0. Файлы конфигурации ----------------------------------------------------------------- Файл конфигурации используется отладчиком Turbo Debugger для изменения значений параметров командной строки, установленных по умолчанию. Вы можете использовать программу TDINST для задания значений, которые будут использоваться по умолчанию (когда отсутствует файл конфигурации), и для создания файла конфигурации. Turbo Debugger ищет файл конфигурации TDCONFIG.TD сначала в текущей директории, затем в системной директории отладчика, заданной с помощью программы TDINST, а затем в директории, содержащей файл TD.EXE. Если вы работаете в DOS версии 2, отладчик не будет искать файл TDCONFIG.TD в директории, содержащей файл TD.EXE. Если отладчик находит файл конфигурации, значения, заданные в этом файле, заменяют значения, установленные по умолчанию. Все параметры командной строки, которые задаются при запуске отладчика Turbo Debugger из DOS, заменяют соответствующие параметры, установленные по умолчанию и параметры, заданные в файле TDCONFIG.TD. В приложении D описано, как использовать программу настройки TDINST для создания файлов конфигурации. Меню Options ----------------------------------------------------------------- Меню Options позволяет задать или настроить ряд параметров, которые влияют на работу отладчика Turbo Debugger. В следующих разделах описаны все команды этого меню и даются необходимые ссылки на другие разделы данного руководства, где можно найти более подробную информацию. --------------------- Language... Source Macros > Display options... Path for source... Save options... Restore options... --------------------- Команда Language (язык) В главе 9 описано, как установить язык выражений и как это влияет на способ ввода выражений. Меню Macros -------------------- Create Alt= Stop Recording Alt- Remove Dalete all -------------------- Команда Macros отображает другое меню, которое позволяет определять новые макросы и удалять те, которые уже были назначены некоторой клавише. Команды этого подменю описаны в следующих разделах (Create, Stop, Recording и Delete All). Команда Create (создать) ------------------------ Начинает запись последовательности нажатия клавиш, которой будет назначена некоторая клавиша (например, Alt-M). Прежде всего отладчик попросит вас нажать клавишу, которой будет назначена последовательность нажатий клавиш. Затем вам надо последовательно нажать все клавиши, которые необходимо записать в виде макроса. Эти нажатия клавиш будут восприниматься отладчиком Turbo Debugger точно так же, как если бы вы не записывали макрос. Для того чтобы начать запись макроса, выберите команду Options|Macros|Create. Отладчик попросит нажать клавишу, по которой будет выполняться вызов макроса. Пока будет идти запись макроса, в верхнем правом углу экрана будет высвечиваться надпись Recording (запись). Нажатия клавиш будут при этом восприниматься Turbo Debugger так же, как если бы записи макроса не происходило. Когда запись макроса будет закончена, выполните команду Options|Macros|Stop Recording или нажмите ее активные клавиши Alt -"знак переноса". Вы также можете еще раз нажать назначенную макросу коавишу (Alt-M). Alt= является активной клавишой команды начала записи макроса. Команда Stop Recording (закончить запись) ----------------------------------------- Заканчивает запись последовательности нажатий клавиш, которая будет назначена некоторой клавише. Используйте эту команду после выполнения команды Options|Macros|Create для того, чтобы назначить макрос указанной клавише. Активными клавишами этой команды являются клавиши Alt-"знак переноса". Команда Remove (удалить) ------------------------ Удаляет макрос, назначенный некоторой клавише. Отладчик попросит вас нажать клавишу, для которой надо удалить макрос. Команда Delete All (удалить все макросы) ---------------------------------------- Удаляет все определенные макросы и восстанавливает значения всех клавиш, которые они имели изначально. Команда Display options (параметры дисплея) Данная команда открывает блок диалога, позволяющий установить несколько опций, управляющих видом дисплея Turbo Debugger. Display Swapping (переключение изображений) -------------------------------------------------- Селективные кнопки Display Swapping позволяют задать один из трех способов управления переключением экрана с выполнения программы на среду отладчика и обратно. Возможен один из следующих вариантов: None Переключение экрана не производится. (никогда) Используйте это значение в том случае, если программа не выдает никакой информации на экран. Smart Переключение экрана на выполнение программы (разумно) производится только тогда, когда выполняется вывод на экран. Turbo Debugger будет переключать экран на каждом шаге отладке подпрограммы, или при выполнении строки исходного текста, в которой производится запись в видеопамять или чтение из нее. Это значение используется по умолчанию. Always Переключение на экран пользователя (всегда) производится при каждом запуске программы. Используйте это значение в том случае, если значение Smart не позволяет полностью проследить за выводом всей информации программы на экран. Если вы выберете это значение, изображение на экране будет мелькать на каждом шаге отладки программы, поскольку экран среды отладчика на короткое время будет заменяться экраном выполнения программы. Integer Format (формат отображения целых чисел) ------------------------------------------------------ Эти селективные кнопки позволяют задать один из трех форматов отображения целых чисел: Decimal Отображение целых чисел в обычном (десятичный) десятичном формате Hex Отображение целых числе в (шестнадцатиричный) шестнадцатиричном формате, соответствующем текущему языку Both Отображение целых чисел как в (оба формата) десятичном формате, так и в шестнадцатиричном (в круглых скобках после десятичного значения). Screen Size (размер экрана) ---------------------------------- Используйте эти кнопки для задания количества строк на экране в среде отладчика: нормальное отображение в 25 строк или отображение в 43/50 строк для EGA и VGA-мониторов. Tab Size (ширина табуляции) -------------------------------- Этот блок ввода позволяет задать количество столбцов, которые занимает каждая позиция табуляции. Ширину табуляции можно уменьшить для того, чтобы видеть на экране больше исходного текста, сдвинутого с помощью табуляции. Ширина табуляции может изменяться от 1 до 32. Команда Path for Source (путь доступа к исходным файлам) Задает директории, в которых Turbo Debugger ищет исходные файлы. Для получения более подробной информации об этой команде обратитесь к главе 8, в которой описывается окно модуля. Команда Save Options (сохранить параметры) Записывает текущие параметры в файл конфигурации на диске. В файл записываются следующие параметры: - макросы; - конфигурация текущего окна; - все значения параметров, заданные в меню Options. Turbo Debugger позволяет сохранять значения параметров тремя способами, в зависимости от установок блоков переключения Save Configuration: Options Сохранение всех установок, сделанных в меню Options, включая окна и макросы Layout Сохранение только конфигурации окон Macros Сохранение только определенных к этому моменту макросов. Команда Restore Options (восстановить параметры) ----------------------------------------------------------------- Восстанавливает значения параметров, записанные в дисковый файл. Вы можете иметь несколько файлов конфигурации, содержащих различные макросы, параметры окон и т.д. Можно задавать имя файла конфигурации, который был создан с помощью команды Save Options или DINST. Временный выход в DOS в процессе отладки ----------------------------------------------------------------- Иногда во время отладки программы бывает нужно выйти в DOS и запустить другую программу или утилиту. Это можно сделать с помощью команды File/OS Shell. Когда вы запускаете командный процессор DOS, отлаживаемая программа при необходимости временно удаляется из памяти и записывается на диск. Это позволяет выполнять команды DOS, даже если отлаживаемая программа занимает всю доступную память. Конечно, при этом происходит задержка для записи программы на диск и считывания ее с диска. Предупреждение: При выходе из Turbo Debugger в DOS не загружайте резидентных программ. После окончания выполнения команд операционной системы, введите команду EXIT, чтобы вернуться в среду отладчика. Возврат в DOS ----------------------------------------------------------------- В любой момент, нажав клавиши Alt-X, вы можете завершить сеанс отладки и вернуться в DOS, за исключением случая, когда у вас имеется активный блок диалога (в этом случае сначала закройте этот блок, нажав Esc). Для этого также можно выбрать команду File /Quit. При этом вся память, выделенная отлаживаемой программе, будет освобождена. Если отлаживаемая программа использует подпрограммы блочного распределения памяти операционной системы DOS, то эта память также будет освобождена. 4.5.5 Команда Arguments (аргументы) Позволяет задать новые аргументы командной строки для отлаживаемой программы. Более подробно эта команда описана в главе 5. |