Турбо отладчик (Turbo Debugger) 3.0

         

Можно также сгенерировать информацию для


       исходного кода.  Можно также сгенерировать информацию для отладки
       только для отдельных модулей (это позволит сократить объем  прог-
       раммы), но потом будет крайне неприятно попасть в модуль, где ин-
       формация для отладки недоступна.  Поэтому мы рекомендуем переком-
       пилировать все модули, если, конечно, вам это позволяет имеющаяся
       память. В случае нехватки памяти или уверенности в правильной ра-
       боте  отдельных модулей можно перекомпилировать только конкретные
       модули.
                       Подготовка программ Borland C++
       -----------------------------------------------------------------
            Если вы   используете   интегрированную   среду  компилятора
       Borland C++ (BC.EXE), сделайте следующее:
            1. Выберите    диалоговое    окно     отладчика     (команда
               Options¦Compiler¦Advanced Code Generation (Параметры¦Ком-
               пилятор¦Генерация эффективного кода)) и установите перек-
               лючатель  Debug  Info  in  OBJs (Информация для отладки в
               объектных модулях).
            2. Выберите команду  Options¦Debugger (Параметры¦Отладчик) и
               установите параметр Standalone (Автономная отладка).
            3. Выберите команду  Options¦Save  (Параметры¦Сохранение)  и


               сохраните установленные параметры.
            Если вы используете автономный компилятор,  работающей с ко-
       мандной строкой (BCC), задайте параметр -v командной строки.
            Если вы используете автономный компоновщик TLINK, для добав-

       TDeb 3.0 #1-3                = 95 =
       ления информации для отладки в конец выполняемого файла .EXE нуж-
       но использовать параметр /v.
            Вы можете также при желании запретить оптимизацию.  В случае
       оптимизированного кода имеются отдельные случаи,  когда Турбо от-
       ладчик не сможет находить некоторые переменные.
                      Подготовка программ Турбо Паскаля

В более ранних версиях отсутствует


       -----------------------------------------------------------------
            Во-первых, вам  необходимо использовать версию Турбо Паскаля
       5.0 или более позднюю. В более ранних версиях отсутствует возмож-
       ность встраивать  информацию  для  отладки,  которой  затем может
       пользоваться отладчик, в файлы .EXE.
            Если вы используете интегрированную интерактивную среду Тур-
       бо Паскаля (TURBO.EXE), то вы должны перейти в меню Debug (Отлад-
       ка) и изменить параметр Standalole Debugging (Автономная отладка)
       в значение On  (Включено).  Переключатель  Options¦Compiler¦Debug
       Information  (Параметры¦Компилятор¦Информация  для отладки) нужно
       также перевести в значение On.  Если вы хотите иметь  возможность
       ссылаться на локальные идентификаторы (те идентификаторы, которые
       описываются внутри процедур или функций),  то нужно также устано-
       вить  параметр Options¦Compiler¦Local Symbols (Параметры¦Компиля-
       тор¦Локальные идентификаторы) в значение On,  или поместить в на-
       чале  своей программы директиву {$L+}.  Затем вы можете выполнить
       компиляцию программы.
            Если вы  используете  версию компилятора,  работающего с ко-
       мандной строкой (TPC.EXE),  то вы должны выполнять  компиляцию  с
       параметром /v.  По умолчанию при этом будет генерироваться инфор-
       мация для отладки и локальные идентификаторы.  Если вы не  хотите
       их  использовать,  то запретить это можно с помощью параметра ко-
       мандной строки /s.
                    Подготовка программ Турбо Ассемблера
       -----------------------------------------------------------------
            При использовании  Турбо Ассемблера для получения полной ин-
       формации для отладки задайте параметр командной строки /zi.
            При компоновке вашей программы с помощью компоновщика TLINK,
       используйте параметр /v для добавления в конец выполняемого файла

и нажмите клавишу Enter. Аргументы


       .EXE информации для отладки.

       TDeb 3.0 #1-3                = 96 =
                           Запуск Турбо отладчика
       -----------------------------------------------------------------
            Чтобы запустить Турбо отладчик,  в ответ  на  подсказку  DOS
       введите  TD,  далее  -  необязательный набор аргументов командной
       строки, и нажмите клавишу Enter. Аргументы командной строки могут
       включать в себя имя отлаживаемой программы и параметры отладчика.
            Если вы просто введете TD и нажмете клавишу Enter, Турбо от-
       ладчик использует параметры, принятые по умолчанию.
            Таким образом, формат командной строки имеет следующий вид:
               TD [параметры] [имя_программы [аргументы_программы]]
            Элементы, заключенные в квадратные скобки, являются необяза-
       тельными.  Если вы их используйте, то набирать их нужно без квад-
       ратных скобок.  "Имя_программы" - это имя той программы,  которую
       требуется  отладить.  За этим именем вы можете указать аргументы.
       Приведем некоторые примеры командных строк:
       -----------------------------------------------------------------
       Команда             Действие
       -----------------------------------------------------------------
       td -sc prog1 a b    Запускает отладчик с параметром -sc и  загру-
                           жает программу prog1 с двумя аргументами  ко-
                           мандной строки a и b.
       td prog2 -x         Запускает отладчик с параметрами по умолчанию
                           и загружает программу  prog2 с одним аргумен-
                           том x.
       -----------------------------------------------------------------
            Если вы просто нажмете клавишу Enter,  Турбо отладчик загру-
       жается и использует параметры, назначенные по умолчанию.
            Заметим, что при запуске Турбо  отладчика  вам  должен  быть
       доступен как выполняемый файл .EXE с включенной в него отладочной

в текущем каталоге, и, наконец,


       информацией, так и исходные файлы программы.  Турбо отладчик ищет
       исходные файлы сначала в том каталоге,  где их находит компилятор
       при выполнении компиляции, затем в каталоге, заданном в параметре
       Options¦Path  (Параметры¦Маршрут)  команды  Source  (Исходный мо-
       дуль),  затем в текущем каталоге, и, наконец, в каталоге, где на-
       ходятся файлы .EXE.
            Перед использованием  Турбо  отладчика вы должны также иметь
       скомпилированный выполняемый файл с полной отладочной  информаци-
       ей.
            Чтобы использовать  Турбо  отладчик   с   продуктами   фирмы
       Borland, вы должны использовать  версию  Турбо  Паскаля  5.0  или
       старше, языки С++ семейства компиляторов Borland, версию Турбо Си
       2.0 или старше,  или версию Турбо Ассемблера 1.0 или  старше.

       TDeb 3.0 #1-3                = 97 =
            Если вы запускаете программу в ответ на подсказку DOS и  за-
       мечаете ошибку, то перед выполнением отладки нужно выйти из прог-
       раммы и перезагрузить ее с отладчиком.
                         Параметры командной строки
       -----------------------------------------------------------------
            Все параметры командной строки начинаются со знака минус (-)
       и отделяются друг от друга и от команды TD по крайней  мере одним
       пробелом.  Вы можете явным образом "выключить" параметр командной
       строки,  если укажете за параметром еще один минус. Например, па-
       раметр -vg- запрещает полное сохранение графики (графического вы-
       вода). Этим  можно  воспользоваться,  если  параметр сохранен для
       постоянного использования в  файле  конфигурации.  Модифицировать
       файл  конфигурации можно с помощью программы конфигурации TDINST,
       работа с которой описана в Приложении D.
            Далее описываются  все имеющиеся параметры командной строки.
       Их список приведен также в Приложении A,  которым удобно  пользо-

Данный параметр загружает указанный файл


       ваться в качестве оперативного справочника.
                  Загрузка файла конфигурации (параметр -c)
       -----------------------------------------------------------------
            Данный параметр загружает указанный файл конфигурации. Между
       параметром -c и именем файла конфигурации не должно  быть  пробе-
       лов.
            Если параметр -c не указывается,  то загружается и использу-
       ется файл TDCONFIG.TD. Приведем пример:
               TD -cMYCONF.TD TCDEMO
            По этой команде будет загружен файл конфигурации MYCONF.TD и
       исходный код для TCDEMO.
           Параметры, управляющие выводом на экран (параметры -d)
       -----------------------------------------------------------------
            Все параметры -d влияют на то,  каким образом  будет  обнов-
       ляться вывод на дисплей.
                                Параметр -do
       -----------------------------------------------------------------
            Запускает отладчик  на вспомогательном дисплее (втором мони-
       торе).  При этом выводимая программой  информация  появляется  на
       основном дисплее.
                                Параметр -dp
       -----------------------------------------------------------------

       TDeb 3.0 #1-3                = 98 =
            Этот параметр используется по умолчанию для цветных  диспле-
       ев. Отладчик выводит информацию на одну страницу дисплея, а отла-
       живаемая программа - на другую. Это позволяет минимизировать вре-
       мя переключения  экранов  (которое  называют  также переключением
       страниц). Данный параметр можно использовать только  для  цветных
       дисплеев с несколькими страницами.  Его можно также использовать,
       если программа,  которую вы отлаживаете, сама работает с несколь-
       кими дисплейными страницами.
                                Параметр -ds
       -----------------------------------------------------------------
            Этот параметр  используется  по  умолчанию  для  монохромных

Он обеспечивает поддержку отдельного образа


       дисплеев.  Он обеспечивает поддержку отдельного образа экрана для
       отладчика  и для отлаживаемой программы,  для чего при выполнении
       программы или возобновлении работы отладчика из памяти загружает-
       ся  весь  экран.  Такой метод вывода двух образов экрана наиболее
       расточителен по времени,  но он работает на любом  дисплее  и  им
       можно  пользоваться для отладки программ,  осуществляющих нестан-
       дартный вывод на дисплей.
        Параметры получения справочной информации (параметры -h и -?)
       -----------------------------------------------------------------
            Эти параметры позволяют вывести на экран справочную информа-
       цию,  описывающую синтаксис командной строки и параметры отладчи-
       ка.
         Параметр переключения идентификатора процесса (параметр -i)
       -----------------------------------------------------------------
            Данный параметр разрешает переключения  идентификатора  про-
       цесса.  Не  пользуйтесь этим параметром при отладке во внутренней
       среде DOS,  или когда активны системные вызовы DOS. Более подроб-
       ная  информация по этому средству содержится в Приложении В.  При
       отладке большинства программ об этом  параметре  беспокоиться  не
       следует.
                 Параметр записи макрокоманды (параметр -k)
       -----------------------------------------------------------------
            Данный параметр разрешает запись клавиатурных  макрокоманд в
       области записи  нажатий  клавиш  окна Execution History (Протокол
       выполнения).
            При указании данного параметра все клавиши, которые вы нажи-
       мали во время сеанса отладки, будут записываться в файл на диске.
       При этом вы сможете восстановить предыдущее состояние, перезагру-
       зив свою  программу с помощью Турбо отладчика и повторив записан-
       ные нажатия клавиш. Турбо отладчик записывает как те клавиши, ко-
       торые вы  нажали  при  работе  в среде Турбо отладчика,  так и те

которые вы нажимаете при работе


       клавиши, которые вы нажимаете при работе с программой  (когда она
       выполняется).

       TDeb 3.0 #1-3                = 99 =
                  Параметр режима Ассемблера (параметр) -l
       -----------------------------------------------------------------
            Этот параметр  приводит к инициализации в режиме Ассемблера,
       показывая средство  просмотра инструкций и состояния центрального
       процессора (окно CPU).  Код инициализации компилятора не выполня-
       ется. Это  означает,  что  вы не сможете выполнять (проходить) по
       шагам код инициализации. Обычно этот код выполняется автоматичес-
       ки при загрузке программы.
            Если вы используете Турбо отладчик  с  программой  удаленной
       отладки Windows WREMOTE,  использование при запуске отладчика па-
       раметра -l означает,  что для любых запускаемых вашей  программой
       динамически компонуемых  библиотек  DLL  вы можете отлаживать код
       инициализации на Ассемблере.  Подробнее об этом рассказывается  в
       других частях руководства.
         Параметр задания размера динамической памяти (параметр -m)
       -----------------------------------------------------------------
            Устанавливает динамически распределяемую рабочую область па-
       мяти в n килобайт. Синтаксис параметра следующий:
               -mN
       где N - число килобайт.  Пробел между параметром  -m  и  числовым
       значение указываться не должен. Приведем пример:
               TD -m10 ВCDEMO.EXE
            По умолчанию используется размер 18К (нижняя граница  - 7К).
       Если вам требуется память, используйте данный параметр для умень-
       шения объема динамически распределяемой области памяти, использу-
       емой  отладчиком.  При  отладке  небольших программ этот параметр
       можно использовать для увеличения объема динамически распределяе-
       мой области памяти. Данный параметр позволяет отладчику сохранять
       временную рабочую информацию, например, список (протокол) исполь-

Если вы задаете нулевой  размер 


       зованных команд.
            Если вы задаете нулевой  размер  динамически  распределяемой
       области памяти  (с помощью параметра -m0),  то Турбо отладчик ис-
       пользует максимально доступный размер (обычно 18К).
                       Поддержка "мыши" (параметр -p)
       -----------------------------------------------------------------
            Этот параметр  разрешает поддержку манипулятора типа "мышь".
       Поскольку Турбо отладчик поддерживает "мышь" по умолчанию, вам не
       нужно использовать данный параметр, если вы не запретите по умол-
       чанию поддержку "мыши" с помощью программы установки TDINST. Если
       вы хотите  запретить  поддержку "мыши",  можно также использовать
       параметр -p-.

       TDeb 3.0 #1-3               = 100 =
                 Параметры удаленной отладки (параметры -r)
       -----------------------------------------------------------------
            Все параметры -r влияют на удаленные коммуникации отладчика.
                                 Параметр -r
       -----------------------------------------------------------------
            Данный параметр разрешает отладку на удаленной системе через
       последовательную связь.  Для этого  используется  назначенный  по
       умолчанию последовательный  порт  (COM1)  и скорость (38400 бод),
       если только они не были изменены с помощью программы TDINST.
                               Параметр -rpN
       -----------------------------------------------------------------
            Устанавливает значение коммуникационного порта в N.  N может
       принимать значения 1 или 2,  что  соответствует  порту  COM1  или
       COM2.
                               Параметр -rsN
       -----------------------------------------------------------------
            Задает скорость обмена для удаленной коммуникации.  N  может
       иметь значение 1 (скорость 9600 бод), 2 (38400 бод) или 3 (115000

влияют на метод обработки Турбо


       бод).
              Параметры обработки исходного кода (параметры -s)
       -----------------------------------------------------------------
            Параметры -s  влияют на метод обработки Турбо отладчиком ис-
       ходного кода и идентификаторов программы.
                                Параметр -sc
       -----------------------------------------------------------------
            Параметр -sc  приводит  к игнорированию регистра (строчные и
       прописные буквы) при вводе имен идентификаторов,  даже если  ваша
       программа скомпонована с разрешением различимости строчных и про-
       писных букв.
            Без параметра -sc Турбо отладчик будет  игнорировать регистр
       только в том случае,  если ваша программа скомпонована с парамет-
       ром игнорирования регистра.
                 Примечание: Данный параметр не оказывает никакого влия-
            ния при отладке программы на Турбо Паскале,  поскольку Турбо
            Паскаль всегда игнорирует регистр.
                                Параметр -sd
       -----------------------------------------------------------------

       TDeb 3.0 #1-3               = 101 =
            Этот параметр  задает  один  или более каталогов,  в которых
       нужно искать исходные файлы. Он имеет следующий синтаксис:
               -sdимя_каталогах[;имя_каталога...]
            Чтобы задать несколько каталогов,  разделите их  в  каталоге
       точкой с запятой,  либо используйте несколько параметров -sd. По-
       иск в каталогах выполняется в том порядке, в котором они указаны.
       "Имя_каталога"  может  представлять собой относительный или абсо-
       лютный маршрут и включать в себя буквенную метку диска.  Если ка-
       кой-либо из каталогов (или их список) задается в файле конфигура-
       ции,  то каталог, задаваемый в параметре -sd, добавляется к концу
       этого списка.
                                Параметр -smN
       -----------------------------------------------------------------

Данный параметр  устанавливает  для  таблицы


            Данный параметр  устанавливает  для  таблицы идентификаторов
       зарезервированный объем памяти. За ним указывается, сколько кило-
       байт вы хотите зарезервировать, например:
               -smN
       где N - число килобайт.  Используйте данный параметр, если вы хо-
       тите загрузить таблицу идентификаторов "вручную" с помощью коман-
       ды File¦Symbol  Load  (Файл¦Загрузка идентификаторов).  Вы можете
       поэкспериментировать, задавая разный объем памяти.
                  Параметры видеоаппаратуры (параметры -v)
       -----------------------------------------------------------------
            Все параметры -v влияют на то, как Турбо отладчик работает с
       видеоаппаратурой.
                                Параметр -vg
       -----------------------------------------------------------------
            Сохраняет полный графический  образ  экрана  программы.  При
       этом требуется дополнительно 8К памяти,  но это позволяет отлажи-
       вать программы с отдельными режимами графического вывода.  Попро-
       буйте использовать данный параметр,  если графический вывод вашей
       программы нарушается при работе с Турбо отладчиком.
                                Параметр -vn
       -----------------------------------------------------------------
            Запрещает использование дисплея в режиме 43/50 строк.  Зада-
       ние данного параметра позволяет сэкономить  некоторое  количество
       памяти. Используйте данный параметр, если вы работаете с дисплеем
       EGA или VGA и знаете,  что вам не потребуется при работе с отлад-
       чиком переходить в режим 43 или 50 строк.
                                Параметр -vp

       TDeb 3.0 #1-3               = 102 =
       -----------------------------------------------------------------
            Разрешает сохранения палитры графического адаптера EGA.
            Параметр удаленной отладки для Microsoft Windows (-w)
       -----------------------------------------------------------------

что работает программа удаленной отладки


            Указывает, что работает программа удаленной отладки WREMOTE,
       используемая  для  удаленной  отладки  прикладных  программ   для
       Microsoft Windows.
       Параметры, определяющие размер оверлейного буфера (параметры -y)
       -----------------------------------------------------------------
            Эти параметры используются для задания  размера  оверлейного
       буфера (в оперативной или в расширенной памяти).
                                Параметр -yN
       -----------------------------------------------------------------
            Данный параметр задает размер оверлейного буфера в оператив-
       ной памяти.  При  этом  используется следующий синтаксис (где N -
       число килобайт, которые вы хотите зарезервировать):
               -yN
            Обычно Турбо отладчик использует для буферного пула 80К. На-
       именьший размер, который вы можете установить - это 20К, наиболь-
       ший - 200К.
            Для установки постоянного размера  буфера  оверлейного  кода
       используйте утилиту TDINST.
            Используйте параметр  -yN,  если у вас не хватает памяти для
       загрузки программы с Турбо отладчиком,  или если  вы  отлаживаете
       маленькую программу и хотите улучшить производительность отладчи-
       ка. При минимальном размере буфера  Турбо  отладчик  будет  часто
       загружать с  диска  программные  оверлеи  и увеличит время ответа
       (реакции). При большом размере буфера будет доступно меньше памя-
       ти для  отлаживаемой программы,  но Турбо отладчик будет работать
       быстрее.

       TDeb 3.0 #1-3               = 103 =
                                Параметр -yeN
       -----------------------------------------------------------------
            Данный параметр  задает размер буфера в памяти EMS.  Исполь-
       зуйте данный параметр,  если вам нужно освободить некоторый объем
       расширенной памяти для отлаживаемой программы. Он имеет следующий

4 страницы. По умолчанию используется


       синтаксис:
            -yeN
       где N определяет число страниц (по 16К) EMS,  которые  вы  хотите
       зарезервировать.
            Например, параметр -ye4 устанавливает для оверлейного буфера
       размер 4 страницы. По умолчанию используется 16 страниц расширен-
       ной памяти.
            Параметр -ye0 запрещает использовать оверлейный буфер в рас-
       ширенной памяти.
                             Файлы конфигурации
       -----------------------------------------------------------------
            Турбо отладчик использует файл конфигурации для  отмены  ис-
       пользуемых по умолчанию параметров командной строки.  Для задания
       используемых по умолчанию параметров,  которые будут действовать,
       когда  файл  конфигурации  отсутствует,  или для построения файла
       конфигурации  можно  использовать  программу  TDINST.
            Турбо отладчик  ищет файл конфигурации TDCONFIG.TD сначала в
       текущем каталоге,  затем в каталоге  TURBO,  заданном  с  помощью
       программы установки TDINST,  а затем в каталоге,  содержащем файл
       TD.EXE. Если вы работаете в DOS версии 2.0,  то отладчик не будет
       искать файл конфигурации в каталоге, где находится TD.EXE.
                 Примечание: Глава  17 описывает использование программы
            TDINST для  создания  файла конфигурации Турбо отладчика для
            Windows (TDW).
            Если Турбо  отладчик  находит файл конфигурации,  заданные в
       этом файле значения отменяют значения, используемые по умолчанию.
       Все задаваемые вами в командной строке при запуске Турбо отладчи-
       ка параметры будут отменять параметры,  значения которых установ-
       лены по умолчанию.
                 Приложение: В  Приложении D описывается,  как использо-
            вать программу установки для создания файлов конфигурации.

       TDeb 3.0 #1-3               = 104 =
                                Меню Options
       -----------------------------------------------------------------

которые управляют работой Турбо отладчика


            Меню Options (Параметры) позволяет вам задавать или настраи-
       вать параметры,  которые управляют работой Турбо отладчика и тем,
       как выглядит выводимая им информация на экране.  В следующих раз-
       делах описывается каждая команда и дается информация о  том,  где
       вы можете  найти более подробное описание в других частях данного
       руководства.
                                              ------------------------¬
            Язык                              ¦ Language...    Source ¦
            Макрокоманды                      ¦ Macros              > ¦
            Параметры дисплея                 ¦ Display options...    ¦
            Маршрут доступа к исходному файлу ¦ Path for source...    ¦
            Параметры сохранения              ¦ Save options...       ¦
            Параметры восстановления          ¦ Restore options...    ¦
                                              L------------------------
                              Команда Language
       -----------------------------------------------------------------
            О том,  как задать текущий язык, используемый при вычислении
       выражений, и как он влияет на способ ввода выражений  рассказыва-
       ется в Главе 9.
                                 Меню Macros
       -----------------------------------------------------------------
                                 -----------------------¬
            Создать              ¦ Create          Alt= ¦
            Остановить запись    ¦ Stop recording  Alt- ¦
            Удалить              ¦ Remove               ¦
            Удалить все          ¦ Delete all           ¦
                                 L-----------------------
            По команде Macros (Макрокоманды) выводится другое меню,  ко-
       торое позволяет вам определить  новые  макрокоманды,  выполняемые
       при нажатии клавиш, или отменить те из них, которые уже присвоены
       клавише. Она содержит следующие подкоманды.

которые должны быть  присвоены  клавише 


                               Команда Create
       -----------------------------------------------------------------
            По команде  Create (Создание) начинается запись нажатий кла-
       виш, которые должны быть  присвоены  клавише  (например,  Alt-M).
       Сначала вам выводится подсказка, где запрашивается, какой клавише
       вы хотите присвоить значения (нажатия клавиш).  Чтобы начать  за-
       пись, выберите  команду Options¦Macros¦Create (Параметры¦Макроко-
       манды¦Создание). После вывода указанной выше подсказки  и  ответа
       на нее вы можете нажимать клавиши,  которые хотите записать.  При

       TDeb 3.0 #1-3               = 105 =
       записи макрокоманды в правом верхнем углу экрана выводится  сооб-
       щение RECORDING (запись).
            Для начала записи макрокоманды используются оперативные кла-
       виши Alt-=.
                           Команда Stop Recording
       -----------------------------------------------------------------
            Эта команда прекращает запись нажатий клавиш (запись  макро-
       команды), которые будут присвоены клавише. Используйте данную ко-
       манду после команды Options¦Macros¦Create (Параметры¦Макрокоманды
       ¦Создание) для присваивания клавише значений нажатий клавиш (мак-
       рокоманды). Завершить  макрокоманду  можно  с помощью сокращенной
       команды (клавиши Alt-минус).
            Не используйте для завершения  записи  макрокоманды  команду
       меню Options¦Macro¦Stop Recording,  так как эти клавиши будут до-
       бавлены в вашу макрокоманду (данный элемент меню  добавлен только
       для того, чтобы напомнить вам о клавишах Alt-минус).
                               Команда Remove
       -----------------------------------------------------------------
            Команда Remove  (Удалить) удаляет макрокоманду,  присвоенную
       клавише. Вам будет выведена подсказка с указанием нажать клавишу,
       макрокоманду которой вы хотите удалить.

в котором вы можете задать


                             Команда Delete All
       -----------------------------------------------------------------
            Команда Delete All (Удалить  все)  удаляет  все  определения
       макрокоманд  для клавиш и присваивает им первоначальные значения.

       TDeb 3.0 #1-3               = 106 =
                           Команда Display Options
       -----------------------------------------------------------------
            Команда Display  Options  (Вывести  параметры) позволяет вам
       открыть диалоговое окно, в котором вы можете задать некоторые па-
       раметры, управляющие режимом вывода Турбо отладчика. Эти парамет-
       ры перечислены далее.
       ----------------------------------------------------------------¬
       ¦Ё File Edit View Run Breakpoints Data Options Window HelpPROMPT¦
       ¦г=[*]=Module: TPDEMO  file: TPDEMO.PAS 217============1=[ ][ ]¬¦
       ¦¦      end;                                                   ^¦
       ¦¦    Writeln;    г[*]==============Display options==========¬ -¦
       ¦¦  end; { ParmsOn¦ Display swapping       Integer format    ¦ -¦
       ¦¦                ¦                         ( )  Hex         ¦ -¦
       ¦¦> begin { progra¦  (.) Smart              ( ) Decimal      ¦ -¦
       ¦¦    Init;       ¦  ( ) Always             (.) Both         ¦ -¦
       ¦¦    Buffer := Ge¦                                          ¦ -¦
       ¦¦    whil[e Buffe¦ Screen lines           Tab size          ¦ -¦
       ¦¦    begin       ¦  (.) 25   ( ) 43/50     8                ¦ -¦
       ¦¦     ProcessLine¦     OK         Cancel       Help         ¦ -¦
       ¦¦     Buffer := G¦     --         ------       ----         ¦ -¦
       ¦¦    end;        L==========================================- -¦
       ¦¦    ShowResults;                                             -¦
       ¦¦    ParmsOnHeap;                                             -¦
       ¦¦  end.                                                       -¦

формат целых чисел; Screen lines


       ¦¦                                                             -¦
       ¦¦                                                             -¦
       ¦¦                                                             v¦
       ¦L<----------------------------------------------------------->-¦
       ¦-Watches-----------------------------------------------------2¬¦
       ¦¦                                                             ¦¦
       ¦L--------------------------------------------------------------¦
       ¦Accept current settings and proceed                            ¦
       L----------------------------------------------------------------
            Рис. 4.1 Диалоговое окно Display Options
            Display swapping - переключение  экрана;  Integer  format  -
       формат целых чисел; Screen lines - строки экрана; Tab Size - раз-
       мер табуляции;  Accept current settings and proceed -  воспринять
       текущие установки и обработать.
                        Переключатель Diplay Swapping
       -----------------------------------------------------------------
            Селективный переключатель  Display  Swapping   (Переключение
       дисплея)  позволяет  вам выбрать один из трех способов управления
       переключением между экраном Турбо отладчика и экраном вашей прог-
       раммы, а именно:
        None      (отсутствует)   Нет переключения между  экранами.  Ис-
                                  пользуйте данный параметр, если вы от-

       TDeb 3.0 #1-3               = 107 =
                                  лаживаете программу,  которая не выво-
                                  дит никакой информации на экран.
        Smart     (эффективное)   Переключение на экран пользователя вы-
                                  полняется только  тогда,  когда  может
                                  произойти вывод на экран. Турбо отлад-
                                  чик будет выполнять переключение экра-
                                  нов  всякий  раз  когда  вы  проходите

выполнения вашей программы, так как


                                  программу  или  выполняете  инструкцию
                                  исходного кода,  в которых осуществля-
                                  ется чтение или запись  в видеопамять.
                                  Этот  параметр используется по умолча-
                                  нию.
        Always    (постоянное)    Переключение в экран пользователя про-
                                  исходит при каждом выполнении програм-
                                  мы пользователя.  Используйте этот па-
                                  раметр,   если   параметр   Smart   не
                                  позволяет перехватить все случаи выво-
                                  да  информации на экран вашей програм-
                                  мой.  Если вы выберете этот  параметр,
                                  экран  будет "мерцать" при каждом шаге
                                   выполнения вашей программы, так как на
                                  короткое  время  экран Турбо отладчика
                                  будет заменяться на экран вашей  прог-
                                  раммы.

       TDeb 3.0 #1-3               = 108 =
                        Переключатель Integer Format
       -----------------------------------------------------------------
            Селективный переключатель  Integer  Format (Формат целых чи-
       сел) позволяет вам определить один из трех  форматов, управляющих
       выводом целых чисел:
               Decimal (Десятичный)         Целые числа  выводятся,  как
                                            обычные десятичные значения.
               Hex     (Шестнадцатиричный)  Целые числа   выводятся    в
                                            шестнадцатиричном   виде   в
                                            формате,  принятом  в  соот-
                                            ветствующем языке.
               Both    (Оба)                Целые числа  выводятся и как

чтобы определить, использует ли Турбо


                                            десятичные, и как шестнадца-
                                            тиричные  значения  (которые
                                            указываются в  скобках после
                                            шестнадцатиричных значений).
                         Переключатель Screen Lines
       -----------------------------------------------------------------
            Селективный переключатель Screen Lines (Размер экрана) можно
       использовать для того,  чтобы определить, использует ли Турбо от-
       ладчик обычный 25-строчный режим экрана или 40-  или  50-строчный
       режим, доступный при использовании адаптеров EGA и VGA.
                              Параметр Tab Size
       -----------------------------------------------------------------
            Параметр Tab  Size  (Размер  табуляции) позволяет определить
       позиции при каждой табуляции.  Вы можете уменьшить число  позиций
       табуляции, чтобы можно было видеть больше исходного текста в фай-
       лах,  выравнивание кода выполнено с помощью табуляции. Размер по-
       зиции табуляции можно установить в значения от 1 до 32.
                           Команда Path for Source
       -----------------------------------------------------------------
            Команда Path for Source (Маршрут доступа к  исходному файлу)
       задает  каталоги,  в которых Турбо отладчик будет искать исходные
       файлы.  Более подробно эта команда описывается  в  Главе  8,  где
       рассказывается об окне Module (Модуль).

       TDeb 3.0 #1-3               = 109 =
                            Команда Save Options
       -----------------------------------------------------------------
            Команда Save Options (Сохранить параметры) открывает  диало-
       говое окно,  с помощью которого вы можете сохранить текущие пара-
       метры на диске в файле конфигурации. В этом файле сохраняются:
            - ваши макрокоманды;

Ё File Edit View Run


            - текущая схема окон и форматы областей окон;
            - все значения параметров, заданные в меню Options (Парамет-
              ры).
       ----------------------------------------------------------------¬
       ¦ Ё File Edit View Run Breakpoints Data Options Window HelpPROMPT¦
       ¦г=[*]=Module: TPDEMO  file: TPDEMO.PAS 217===========1=[ ][ ]=¬¦
       ¦¦     end;                                                    ^¦
       ¦¦   Writeln;                                                  -¦
       ¦¦ end; { ParmsOnHeap }         г[*]===Save configuration=====¬-¦
       ¦¦                              ¦ [X] Options           OK    ¦-¦
       ¦¦ begin { program }            ¦ [ ] Layout            Cancel¦-¦
       ¦¦   Init;                      ¦ [ ] Macros            ----- ¦-¦
       ¦¦   Buffer := GetLine;         ¦                             ¦-¦
       ¦¦   whil[e Buffer <> '' do     ¦ Save to               Help  ¦-¦
       ¦¦   begin                      ¦  tdconfig.tdw         ----- ¦-¦
       ¦¦    ProcessLine(Buffer);      L=============================--¦
       ¦¦    Buffer := GetLine;                                       -¦
       ¦¦   end;                                                      -¦
       ¦¦   ShowResults;                                              -¦
       ¦¦   ParmsOnHeap;                                              -¦
       ¦¦ end.                                                        -¦
       ¦¦                                                             -¦
       ¦¦                                                             -¦
       ¦¦                                                             v¦
       ¦L<----------------------------------------------------------->-¦
       ¦-Watches-----------------------------------------------------2¬¦
       ¦¦                                                             ¦¦
       ¦L--------------------------------------------------------------¦

Турбо отладчик позволяет вам сохранить


       ¦Save all configuration information                             ¦
       L----------------------------------------------------------------
            Рис. 4.2 Диалоговое окно Save Options
            Save configuration - сохранение конфигурации;  Options - па-
       раметры; Layout  - схема окон;  Macros - макрокоманды;  Save to -
       сохранить в...;  Save all configuration information  -  сохраняет
       всю информацию о конфигурации;  OK - выбрать;  Cancel - отменить;
       Help - справка.
            Турбо отладчик позволяет вам сохранить все или выбранные па-
       раметры, в зависимости от ваших установок:

       TDeb 3.0 #1-3               = 110 =
            Options - сохраняются все  значения,  установленные  в  меню
                      Options.
            Layout  - сохраняется только схема окон.
            Macros  - сохраняются только текущие (определенные) макроко-
                      манды.
                           Команда Restore Options
       -----------------------------------------------------------------
            Команда Restore  Options  (Восстановить параметры) позволяет
       восстановить параметры из файла на диске.  Вы можете создать нес-
       колько файлов конфигурации, записав в них различные макрокоманды,
       схемы окон и т.д. Требуется задавать файл параметров, созданный с
       помощью команды  Save  Options  (Сохранить параметры) или утилиты
       TDINST.
                      Выполнение в Турбо отладчике DOS
       -----------------------------------------------------------------
            При отладке программы иногда возникает необходимость исполь-
       зовать другую программу или утилиту.  Это можно сделать с помощью
       команды File¦DOS Shell (Файл¦Среда операционной системы).
            Когда вы запускаете командный  процессор  DOS,  отлаживаемая
       вами программа при необходимости перекачивается на диск. Это поз-
       воляет вам выполнить команды DOS,  даже если вы отлаживаете прог-

качка вашей программы на диск


       рамму,  занимающую всю доступную память.  Конечно, при этом пере-
       качка вашей программы на диск или обратно в память может привести
       к задержке в несколько секунд.
                 Предупреждение: При временном выходе в DOS не загружай-
            те над Турбо отладчиком резидентных программ.
            Когда вы закончите вводить команды DOS, для возврата в сеанс
       отладки введите команду EXIT и нажмите клавишу Enter.
                  Возврат в операционную систему DOS
       -----------------------------------------------------------------
            В любой  момент (за исключением того момента,  когда активно
       диалоговое окно) с помощью нажатия клавиш Alt-X вы можете  завер-
       шить  сеанс отладки и вернуться в DOS.  Для этого можно также ис-
       пользовать команду File¦Quit (Файл¦Выход).  Если открыто диалого-
       вое окно, вы сначала должны закрыть его, нажав клавишу Esc.
            При выходе из Турбо отладчика вся ранее выделенная для отла-
       живаемой программы память освобождается.  Если программа, которую
       вы отлаживаете,  выделяла память с помощью процедур DOS выделения
       блока памяти, эта память также освобождается.

       TDeb 3.0 #1-3               = 111 =
                  Глава 5. Управление выполнением программы
       -----------------------------------------------------------------
            При отладке программы вы обычно выполняете части программы и
       проверяете, что в точках останова она ведет себя правильно. Турбо
       отладчик  предоставляет вам много способов управления выполнением
       программы. Вы можете:
            - выполнять  одну машинную инструкцию или одну строку исход-
              ного кода;
            - "пропускать" вызовы процедур или функций;
            - выполнять непрерывную ("автоматическую") трассировку;
            - выполнять программу, пока текущая процедура или функция не
              возвратит управление в вызывающую программу;

Сеанс отладки состоит из чередующихся


            - выполнять программу до определенного адреса;
            - выполнять программу до точки останова.
            - выполнять  программу  в  обратном направлении (отмена инс-
              трукций).
            Сеанс отладки состоит из чередующихся периодов работы отлад-
       чика и вашей программы. Когда работает отладчик, вы можете запус-
       тить вашу программу, выбрав одну из команд меню Run (Выполнение),
       или  нажав  эквивалентную ей оперативную клавишу.  При выполнении
       программы отладчик запускается,  когда  будет  выполнен  заданный
       участок вашей программы, когда вы прерываете выполнение с помощью
       специальной  последовательности клавиш,  или она приостанавливает
       выполнение, когда Турбо отладчик встретит точку останова.
            В данной главе мы покажем вам, как можно проверить состояние
       программы, когда  управление  получает Турбо отладчик.  Мы обучим
       вас различным способам выполнения частей вашей программы, а также
       покажем вам,  как можно прервать ее выполнение. Наконец, мы пере-
       числим способы, с помощью которых можно восстановить сеанс отлад-
       ки (той же или другой программы).
                      Анализ текущего состояния программы
       -----------------------------------------------------------------
            "Состояние" вашей программы включает в себя  следующие  эле-
       менты:
            - аргументы командной строки DOS для этой программы;
            - стек активных функций или процедур;
            - текущее положение в исходном или машинном коде;

       TDeb 3.0 #1-3               = 112 =
            - значения регистров;
            - содержимое памяти;
            - причину,  по которой отладчик остановил  выполнение  вашей
              программы;
            - значение переменных вашей программы.
            О том, как проверить и изменить значения переменных и данных
       вашей  программы подробнее рассказывается в Главе 6.  В следующих

В этом окне показаны все


       разделах описываются  окно  Variables  (Переменные),  окно  Stack
       (Стек), локальные меню областей глобальных и статических перемен-
       ных, команда Origin (Начало) и команда Get Info (Получение инфор-
       мации).

       TDeb 3.0 #1-3               = 113 =
                               Окно Variables
       -----------------------------------------------------------------
            В этом окне показаны все переменные, которые доступны из те-
       кущего места программы. Его можно использовать, чтобы найти пере-
       менные,  написание  имен  которых вы не помните.  Для дальнейшего
       анализа или изменения их значений можно использовать команды  ло-
       кальных меню.  Это окно можно также использовать для проверки пе-
       ременных, локальных по отношению к любой вызванной функции.
              г[*]=Variables=========================3=[ ][ ]=¬
              ¦ TPDEMO.SHORESULTS              @7129:01fA     ¦
              ¦ TPDEMO.INIT                    @7129:0402     ¦
              ¦ TPDEMO.PROCESSLINE             @7129:04B5     ¦
              ¦ TPDEMO.GETLINE                 @7129:05A5     ¦
              ¦ TPDEMO.PARMSONHEAP             @7129:0651     ¦
              ¦ TPDEMO.NUMLINES                1 ($1)         ¦
              ¦ TPDEMO.NUMWORDS                0 ($0)         ¦
              ¦<--------------------------------------------->¦
              ¦ CH                             'A'            ¦
              ¦ ISLETTER                       True           ¦
              ¦ S                              'ABC DEF'      ¦
              ¦ I                              1 ($1)         ¦
              ¦ WORDLEN                        28969          ¦
              L==============================================--
            Рис. 5.1 Окно Variables
            При отладке программы на Турбо Паскале переменные  не  будут
       упорядочиваться по алфавиту.
            Окно Variables (Переменные) можно открыть, выбрав в основном

показывает все глобальные идентификаторы  вашей


       меню команду View/Variables  (Обзор/Переменные).  Окно  Variables
       содержит две области:
            - Область  глобальных  переменных, которая находится вверху,
              показывает все глобальные идентификаторы  вашей программы.
            - Область статических/локальных переменных (внизу) показыва-
              ет  все  статические  переменные (идентификаторы) текущего
              модуля,  которым является модуль, соответствующий текущему
              адресу программы (CS:IP),  и все идентификаторы, локальные
              по отношению к текущей функции.
            В обеих областях выводится имя переменной (слева) и ее  зна-
       чение (справа). Если Турбо отладчик не может найти никакой инфор-
       мации о типе данных идентификаторов,то он выводит четыре вопроси-
       тельных знака (????).
            Как и во всех других локальных меню,  нажатие клавиш Alt-F10
       приводит к выводу локального меню области глобальных данных. Если
       разрешено использование сокращений с клавишей Ctrl, то для досту-
       па к команде можно нажать клавишу Ctrl с первой  буквой описанной

       TDeb 3.0 #1-3               = 114 =
       команды.
            Если ваша программа содержит функции,  которые выполняют ре-
       курсивные вызовы, или вы хотите просмотреть переменные, локальные
       по отношению к вызванной функции, то вы можете проверить значение
       конкретных локальных данных функции.  Сначала с  помощью  команды
       View/Stack  (Обзор/Стек) создайте окно Stack (Стек),  затем пере-
       местите подсветку на вызов нужной функции.  Затем нажмите клавиши
       Alt-F10 для выбора команды Locals (Локальные). При этом в области
       статических данных окна Variables (Переменные) выведутся значения
       для данного конкретного вхождения функции.
                Локальное меню области глобальных переменных
       -----------------------------------------------------------------
            В этом  локальном  меню   имеется   три   команды:   Inspect

Данная команда открывает окно Inspector


       (Проверка), Change (Изменение) и Watch (Просмотр).
                          --------------¬
                          ¦ Ispect      ¦      Проверка
                          ¦ Change      ¦      Изменение
                          ¦ Watch       ¦      Просмотр
                          L--------------
                               Команда Inspect
       -----------------------------------------------------------------
            Данная команда открывает окно Inspector (Проверка),  в кото-
       ром показано значение выбранной глобальной переменной.
            Если переменная, которую необходимо проверить, является име-
       нем функции,  в окне будет показан ее исходный текст,  либо (если
       исходный текст  недоступен) в окне процессора (CPU) будет показан
       дисассемблированный код.
                 Примечание: Работа с  окном  Inspector  более  подробно
            описана в Главе 6.
            Если имеется  локальная переменная,  имя которой совпадает с
       проверяемой глобальной переменной,  будет показано значение  гло-
       бальной переменной, а не локальной. Такое поведение немного отли-
       чается от обычного поведения окна Inspector, которое обычно пока-
       зывает значение переменной,  связанное с текущей точкой программы
       (CS:IP). Благодаря этому, пользователь может просматривать значе-
       ния  глобальных переменных,  имена которых используются и для ло-
       кальных переменных.
                               Команда Change
       -----------------------------------------------------------------
            Данная команда заменяет значение выбранной (выделенной) гло-

       TDeb 3.0 #1-3               = 115 =
       бальной переменной значением,  которое вводит пользователь в окне
       диалога Change. Турбо отладчик выполняет любое необходимое преоб-
       разование типов данных точно так же,  как если бы  для  изменения
       значения использовался оператор присваивания исходного языка.

и начав вводить новое значение.


                 Примечание: Более подробная информация о присваивании и
            преобразовании типов данных приведена в Главе 9.
            Кроме этого,  можно изменить значение выбранной  переменной,
       просто  открыв окно Inspector и начав вводить новое значение. При
       этом появляется такой же блок диалога,  как если бы сначала  была
       выбрана команда Change (Изменение).
                                Команда Watch
       -----------------------------------------------------------------
            Эта команда открывает окно Watches (Просмотр) и  помещает  в
       него текущее выбранное (выделенное) имя глобального идентификато-
       ра.  Данная команда просто помещает в окно Watches строку  симво-
       лов.
                 Примечание: Информацию об окне Watches см. в Главе 6.
            Окно Watches не отслеживает, является ли переменная глобаль-
       ной  или локальной.  Если в окно вы поместили командой Watch гло-
       бальную переменную, а затем вам встретится локальная переменная с
       тем же именем, то пока вы будете находиться в блоке локальной пе-
       ременной,  последняя будет иметь преимущество.  Другими  словами,
       окно Watches всегда показывает значение переменной с точки зрения
       текущего исполнительного адреса программы (CS:IP).
           Локальное меню области статических/локальных переменных
       -----------------------------------------------------------------
            Для вывода локального меню области статических/локальных пе-
       ременных  нажмите  клавиши Alt-F10.  Если разрешено использование
       сокращений с клавишей Ctrl, то для доступа к команде можно нажать
       клавишу Ctrl с подсвеченной буквой нужной команды.
            Область статических/локальных переменных содержит четыре ко-
       манды локального меню:  Inspect (Проверка),  Change  (Изменение),
       Watch (Просмотр) и Show (Вывод).
                          --------------¬
                          ¦ Ispect      ¦      Проверка

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


                          ¦ Change      ¦      Изменение
                          ¦ Watch       ¦      Просмотр
                          ¦ Show        ¦      Вывод
                          L--------------
                               Команда Inspect

       TDeb 3.0 #1-3               = 116 =
       -----------------------------------------------------------------
            Команда Inspect (Проверка)  открывает  окно  проверки  (окно
       Inspector), в котором выводится содержимое подсвеченного в данный
       момент локального идентификатора.
                 Примечание: Более  подробно  о  поведении окна проверки
            рассказывается в Главе 6.
                               Команда Change
       -----------------------------------------------------------------
            Команда Change (Изменение) изменяет  значение  выбранного  в
       данный  момент  (подсвеченного)  локального  идентификатора на то
       значение, которое вы введете в ответ на подсказку. Турбо отладчик
       выполняет все необходимые преобразования типов данных так  же как
       это делается в операторе присваивания в используемом языке.
                 Примечание: Более  подробно о присваивании и преобразо-
            вании типов данных рассказывается в Главе 9.
            Вы можете также изменить значение  текущего  (подсвеченного)
       идентификатора, просто  начав  вводить  новое значение.  Когда вы
       сделаете это,  появляется такая же подсказка,  как и после  ввода
       команды Change.
                                Команда Watch
       -----------------------------------------------------------------
            Открывает окно  Watches  и помещает в него текущее выбранное
       (выделенное) имя статического или локального идентификатора.
                 Примечание: Более  подробно работа с окном Watches опи-
            сана в Главе 6.

       TDeb 3.0 #1-3               = 117 =
                                Команда Show

Local Display, позволяющее изменить область


       -----------------------------------------------------------------
            При выборе  команды  Show  (Вывод)  появляется  окно диалога
       Local Display, позволяющее изменить область определения показыва-
       емых переменных (статические,  локальные динамические или и те, и
       другие) и модуль, из которого эти переменные выбираются.
            В диалоговом окне вам предлагается сделать выбор  при помощи
       следующих селективных переключателей:
            Static   Показывать только статические переменные.
            Auto     Показывать  только  локальные  переменные   данного
                     блока.
            Both     Показывать оба типа переменных (по умолчанию).
            Module   Изменить текущий модуль.  Выводит окно  диалога  со
                     списком модулей  программы,  в  котором  вы  можете
                     вызвать новый модуль.
                    г[*]======Local Display=======3=[ ][ ]¬
                    ¦                                     ¦
                    ¦ ( ) Static                 OK       ¦
                    ¦ ( ) Auto                   Cancel   ¦
                    ¦ (*) Both                   Help     ¦
                    ¦ ( ) Module                 ------   ¦
                    ¦                                     ¦
                    L=====================================-
            Рис. 5.2 Диалоговое окно Local Display
                                 Окно Stack
       -----------------------------------------------------------------
            Окно Stack  (Стек)  вы  можете  создать  с  помощью  команды
       View¦Stack (Обзор¦Стек).  В окне стека выводится список всех  ак-
       тивных процедур и функций.  Первой в списке указывается последняя
       вызванная процедуры,  за которой следует вызвавшая ее процедура и
       предыдущая процедура, и так до самой первой процедуры или функции
       программы (основная (main) программа в Паскале,  в Си эта функция

Для любой процедуры или функции


       обычно называется main()).  Для любой процедуры или функции можно
       видеть значение каждого параметра, с которым она вызывалась.
                    г[*]==Stack==============3====[ ][ ]=¬
                    ¦TPDEMO.PROCESSLINE.ISLETTER('A')    ¦
                    ¦TPDEMO.PROCESSLINE('ABCDEF')--------¦
                    ¦                                    ¦
                    ¦                                    ¦
                    L<---------------------------------->-
            Рис. 5.3 Окно Stack

       TDeb 3.0 #1-3               = 118 =
            Для программ,  реализующих  методы объектно-ориентированного
       программирования, окно Stack показывает  имена  методов  объектов
       или функции-элементов классов,  перед  которыми  указывается  имя
       объекта или тип класса, определяющие метод или функцию:
               SHAPES.ACIRCLE(174, 360, 75.0)   { Турбо Паскаль }
            Для вывода  локального  меню  окна  стека  нажмите   клавиши
       Alt-F10  или  клавишу  Ctrl с первой буквой желаемой команды (что
       позволит получить непосредственный доступ к команде).
                          Локальное меню окна Stack
       -----------------------------------------------------------------
            Локальное меню  окна  Stack  содержит  две команды:  Inspect
       (Проверка) и Locals (Локальные переменные).
                   --------------¬
                   ¦ Inspect     ¦     Проверка
                   ¦ Locals      ¦     Локальные переменные
                   L--------------

       TDeb 3.0 #1-3               = 119 =
                               Команда Inspect
       -----------------------------------------------------------------
            Команда Inspect (Проверка) открывает окно  Module  (Модуль),
       позиционированное на активную строку в текущей подсвеченной функ-
       ции.  Если подсвеченная функция находится в вершине  списка  (это
       последняя вызванная функция), то в окне Module показывается теку-

Если подсвечена одна из функций,


       щий адрес программы (CS:IP). Если подсвечена одна из функций, ко-
       торые  вызывали последнюю функцию,  то окно позиционируется на ту
       строку в функции, которая будет выполняться после того, как вызы-
       ваемая функция возвратит управление.
            Вы можете также вызвать эту команду, позиционировав подсвет-
       ку на функции и нажав клавишу Enter.
                               Команда Locals
       -----------------------------------------------------------------
            Команда Locals   (Локальные   переменные)   открывает   окно
       Variables (Переменные),  в котором выводятся идентификаторы,  ло-
       кальные  по отношению к текущему модулю,  а также идентификаторы,
       локальные по отношению к подсвеченной в  данный  момент  функции.
       Если функция вызывает рекурсивно сама себя,  то в окне стека име-
       ется несколько вхождений данной функции. С помощью позиционирова-
       ния подсветки на функции, данная команда позволяет вам просматри-
       вать локальные переменные для данного вхождения функции.
                       Команда локального меню Origin
       -----------------------------------------------------------------
            Окно Module  и область Code (Код) окна CPU (Центральный про-
       цессор) содержат в составе локального меню команду Origin  (Нача-
       ло). Команда Origin позиционирует курсор по текущему адресу прог-
       раммы (CS:IP).  Это может  оказаться  очень  полезным,  когда  вы
       просмотрели вашу программу и хотите вернуться обратно к тому мес-
       ту, где она остановилась.
                Анализ состояния выполнения: команда Get Info
       -----------------------------------------------------------------
            Вы можете выбрать команду File¦Get Info (Файл¦Получение  ин-
       формации)  для  анализа  использования памяти и определения того,
       почему получил управление отладчик. Эта и другая информация отоб-
       ражается в текстовом блоке,  который удаляется с экрана при нажа-

тии клавиши Enter, пробела или


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

       TDeb 3.0 #1-3               = 120 =
                                Формат DOS
       -----------------------------------------------------------------
            Если вы отлаживаете программу для DOS,  то  в  блоке  System
       Information будет выведена следующая информация:
          - имя отлаживаемой вами программы;
          - описание причины остановки программы;
          - объемы памяти,  используемой DOS,  Турбо отладчиком и  вашей
            программой;
          - если  у вас имеется расширенная память (EMS) то ее использо-
            вание показывается справа от использования основной памяти;
          - список прерываний, перехваченных отлаживаемой программой;
          - версия DOS, под управлением которой вы работаете;
          - обрабатываются  ли точки останова целиком программным путем,
            или имеются вспомогательные аппаратные средства.
                    г[*]====System Information============¬
                    ¦Program: D:\PASCAL\EXAMPLES\EMS.EXE  ¦
                    ¦Status:  Stopped at #TCDEMO#38       ¦
                    ¦                                     ¦
                    ¦______Memory____ ______EMS__________ ¦
                    ¦ DOS     : 177Kb DOS:     :    464Kb ¦
                    ¦ Debugger: 282Kb Debugger :    272Kb ¦
                    ¦ Symbols :   1Kb Program  :      0Kb ¦
                    ¦ Program :  83Kb Avaliable:    788Kb ¦
                    ¦ Avaliable:  94Kb                    ¦
                    ¦                                     ¦
                    ¦ User Interrupt:  00h  02h           ¦
                    ¦                                     ¦
                    ¦ DOS Version    : 5.00               ¦
                    ¦ BreakPoints    : Software           ¦
                    ¦ 7-9-1988  12:45 pm                  ¦

Текстовое окно команды Get


                    ¦               OK                    ¦
                    ¦              ----                   ¦
                    L=====================================-
            Рис. 5. 4 Текстовое окно команды Get Info для DOS
            Debugger -  отладчик;  Symbols  - идентификаторы;  Program -
       программа; Memory - память; EMS - расширенная память; Avaliable -
       доступно памяти; User interrupt - прерывание пользователя; Status
       - состояние;  Stopped at...  - остановлено на...;  DOS Version  -
       версия DOS; BreakPoints - точки останова; Software - программные.
            На второй строке данного окна, где описывается причина оста-
       новки программы, могут выводиться следующие сообщения:

       TDeb 3.0 #1-3               = 121 =
            Stopped at_ (остановлена на...)
            Ваша программа  остановлена  в результате выполнения команды
       RUN¦Execute To (Запуск¦Выполнение до...),  Run¦Go to Cursor  (Вы-
       полнение¦Переход к курсору),  или Run¦Until Return (Выполнение¦До
       возврата управления).  В этой строке состояния  выводится  также,
       где была сначала загружена ваша программа,  и выполнялся ли в ва-
       шей программе код инициализации компилятора для перехода на нача-
       ло исходного кода.
            No program loaded (программа не загружена)
            Вы запустили Турбо отладчик без программы. Невозможно выпол-
       нить никакой код,  пока вы не загрузите целиком программу или  не
       ассемблируете  некоторые  инструкции с помощью команды локального
       меню Assemble  (Ассемблирование)  области  Code  (Код)  окна  CPU
       (Центральный процессор).
            Control Break (клавиша Ctrl-Break)
            Вы прервали  выполнение  программы с помощью Ctrl-Break (или
       другой клавиши, которой было присвоено это значение после переоп-
       ределения клавиши Break).
            Trace (трассировка)
            Вы выполняете  с  помощью  клавиши  F7 или команды Run¦Trace

В вашей программе встретилась точка


       (Выполнение¦Трассировка) трассировку по  одной  строке  исходного
       кода или машинной инструкции.
            Breakpoint at_ (точка останова на...)
            В вашей программе встретилась точка останова, которая приве-
       ла к ее остановке.  Текст после "at" представляет собой  адрес  в
       программе, где расположена точка останова.
            Terminated, exit code_ (выполнение прекращено,  код заверше-
            ния...)
            Ваша программа  завершила  выполнение.  Текст после "code" -
       это числовое значение кода завершения,  возвращаемого вашей прог-
       раммой DOS.  Если ваша программа не возвращает явное значение, то
       на экран может выводиться произвольное значение ("мусор").  Прог-
       рамму нельзя запустить, пока вы не перезагрузите ее с помощью ко-
       манды Run¦Program Reset (Выполнение¦Сброс программы).
            Loaded (загружена)
            Вы загрузили Турбо отладчик и задали программу  и  параметр,
       который  предотвращает  выполнение кода инициализации компилятора
       (sturtup code).  В этот момент никаких инструкций еще не выполне-
       но, включая те, которые управляют первоначальной установкой ваше-

       TDeb 3.0 #1-3               = 122 =
       го стека и сегментных регистров.  Это означает,  что при  попытке
       проверить какие-либо данные в вашей программа, вы можете получить
       некорректные значения.
            Step (шаг)
            Вы выполняете программу по одной строке исходного  кода  или
       машинной инструкции,  пропуская вызовы функций (с помощью клавиши
       F8 или команды Run¦Step (Выполнение¦Шаг)).
            Interrupt (прерывание)
            Вы нажали   клавишу   прерывания   (обычно    это    клавиши
       Ctrl-Break), чтобы получить управление. Ваша программа немедленно
       прерывает выполнение и управление получает отладчик.
            Exception_ (особая ситуация)
            Вы использовали TD386,  когда  встретилась  особая  ситуация

Это обычно случается, когда программа


       процессора. Это обычно случается, когда программа пытается выпол-
       нить недопустимый для данного процессора код операции. В докумен-
       тации  по процессору Intel каждая особая ситуация описана подроб-
       но.
            Hardware deviсe driver stuck (конфликт с драйвером  аппарат-
            ного устройства отладки)
            Вы используете аппаратный отладчик и  установили  аппаратную
       точку останова для стековой  переменной,  конфликтующую  с  Турбо
       отладчиком. Прежде  чем пойти дальше,  вы должны убрать эту аппа-
       ратную точку останова.
            Divide by zero (деление на ноль)
            Ваша программа выполнила команду деления,  в которой  встре-
       тился нулевой делитель.
            Global breakpoint _ at__ (глобальная точка останова _ в _)
            Встретилась глобальная точка останова.  Вам сообщен ее номер
       и адрес в программе.

       TDeb 3.0 #1-3               = 123 =
                               Формат Windows
       -----------------------------------------------------------------
            Если вы отлаживаете программу для Windows, то в блоке System
       Information будет выведена следующая информация:
            -  имя отлаживаемой программы;
            -  описание причин останова программы;
            -  информация о глобальной памяти в системе;
            -  текущая версия DOS;
            -  текущие дата и время.
                г[*]====System Information===================¬
                ¦Program: C:\TCW\TCWDEMO.EXE                 ¦
                ¦Status: Window message breakpoint at wndproc¦
                ¦                                            ¦
                ¦______Global Memory________                 ¦
                ¦                                            ¦
                ¦ Mode    :       Non-EMS                    ¦
                ¦ Banked  :            0Kb                   ¦
                ¦ Not banked :    12006Kb                    ¦

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


                ¦ Largest :       177Kb                      ¦
                ¦                                            ¦
                ¦                                            ¦
                ¦                                            ¦
                ¦ DOS Version    : 5.00                      ¦
                ¦                                            ¦
                ¦ 7-9-1991  12:45 pm                         ¦
                ¦               OK           Help            ¦
                ¦              ----         -----            ¦
                L============================================-
            Рис. 5. 5 Текстовое окно Windows Get Info
                    Сообщения, выводимые в строке состояния
            Ниже приведен  список сообщений,  которые объясняют причину,
       по которой было остановлено выполнение программы,  и выводятся во
       второй строке окна (строке состояния).
            Stoped at_ (остановлена на...)
            Программа была  остановлена в результате выполнения одной из
       команд:  Run¦Execute To,  Run¦Go to Cursor или Run¦Until  Return.
       Это  сообщение  в строке состояния выдается также при первой заг-
       рузке программы, когда выполнен код начальной загрузки, сформиро-
       ванный  компилятором,  и  маркер  выполнения  установлен в начале
       текста программы.

       TDeb 3.0 #1-3               = 124 =
            No program loaded (программа не загружена)
            Турбо отладчик был запущен без какой-либо программы. Никакой
       код не может быть выполнен, пока не будет загружена программа или
       не будет  ассемблированы  некоторые  команды  с  помощью  команды
       Assemble локального меню области кода окна процессора (CPU).
            Trace (трассировка)
            Была выполнена одна строка исходного текста или машинная ко-
       манда по команде F7 (Run¦Trace).
            Breakpoint at_ (точка останова в...)
            При выполнении программы встретилась точка останова,  задан-

ная для прерывания работы программы.


       ная для прерывания работы программы. Текст после слова "at" озна-
       чает адрес команды программы,  на которой установлена точка оста-
       нова.
            Window Message breakpoint at_ (точка останова  по  сообщению
            окна в _)
            Ваша программа  встретила  точку останова по сообщению окна,
       заданную для прерывания работы программы.  Текст после слова "at"
       - это оконная процедура, которой предназначено сообщение.
            Terminated, exit code_ (завершена, код выхода...)
            Работа программы завершена.  Текст после слова "code" предс-
       тавляет собой код выхода,  возвращаемый  программой  операционной
       системе DOS. Если программа не возвращает DOS какого-либо опреде-
       ленного значения, вместо кода выхода может отображаться какое-ли-
       бо не имеющее смысла число. Программа не может быть запущена, по-
       ка не  будет  загружена   заново   командой   Run¦Program   Reset
       (Выполнение¦Сброс программы).
            Loaded (загружена)
            Вы запустили  Турбо  отладчик,  указав имя программы и пара-
       метр,  который предотвращает выполнение кода начальной  загрузки,
       сформированного компилятором.  Никакие команды еще не были выпол-
       нены, включая те, которые устанавливают стек и сегментные регист-
       ры.  Это  означает,  что если вы попытаетесь проверить какие-либо
       данные в своей программе, вы получите неправильные значения.
            Interrupt (прервана)
            Была нажата клавиша прерывания (обычно Ctrl-Alt-SysRq), что-
       бы  вернуть управление отладчику.  В этом случае работа программы
       немедленно прерывается, а управление передается отладчику.
            Exception_ (особая ситуация)

       TDeb 3.0 #1-3               = 125 =
            Встретилась особая ситуация процессора.  Это обычно случает-
       ся,  когда  программа пытается выполнить недопустимый для данного

В документации по процессору Intel


       процессора код операции.  В документации по процессору Intel каж-
       дая особая ситуация описана подробно.
            Divide by zero (деление на ноль)
            Ваша программа  выполнила команду деления,  в которой встре-
       тился нулевой делитель.
            Global breakpoint _ at__ (глобальная точка останова _ в _)
            Встретилась глобальная точка останова.  Вам сообщен ее номер
       и адрес в программе.
                       Информация о глобальной памяти
       -----------------------------------------------------------------
            TDW дает вам следующую информацию о глобальной памяти:
       Mode               Режимами памяти могут быть:  Large-frame   EMS
       (Режим)            (EMS-память  с  большим  размером  страничного
                          блока), Small-frame EMS  (EMS-память  с  малым
                          размером страничного блока),  или non-EMS (до-
                          полнительная память).
       Banked             Объем памяти в килобайтах выше линии банка EMS
       (Банкируемая)      (которая может  быть  откачана  в  расширенную
                          память, если ее использует система).
       Not Banked         Объем памяти в килобайтах ниже линии банка EMS
       (Не банкируемая)   (которая не может быть откачана в расширенную
                          память).
       Largest            Наибольший непрерывный блок памяти в  килобай-
       (Наибольший)       тах.
                                  Меню Run
       -----------------------------------------------------------------
            Меню Run  (Выполнение) содержит несколько параметров для вы-
       полнения различных частей вашей программы. Поскольку эти парамет-
       ры часто используются, им соответствуют функциональные клавиши.

       TDeb 3.0 #1-3               = 126 =
                 ----------------------------¬
                 ¦ Run                    F9 ¦  Выполнение
                 ¦ Go to cursor           F4 ¦  Выполнение до курсора

При наступлении одного из следующих


                 ¦ Trace into             F7 ¦  Трассировка
                 ¦ Step over              F8 ¦  Шаг с пропуском
                 ¦ Execute to...      Alt-F9 ¦  Выполнение до...
                 ¦ Until return       Alt-F8 ¦  Выполнение до возврата
                 ¦ Animate...                ¦  Автоматизировать
                 ¦ Back trace         Alt-F4 ¦  Обратная трассировка
                 ¦ Instruction trace  Alt-F7 ¦  Трассировка инструкций
                 +---------------------------+
                 ¦ Arguments...              ¦  Аргументы
                 ¦ Program reset     Ctrl-F2 ¦  Сброс программы
                 L----------------------------

       TDeb 3.0 #1-3               = 127 =
                              Команда Run [F9]
       -----------------------------------------------------------------
            Команда Run  (Выполнение) запускает вашу программу на выпол-
       нение. При наступлении одного из следующих событий управление пе-
       редается отладчику.
            - ваша программа завершила выполнение;
            - обнаружена точка останова с действием прерывания;
            - вы прервали выполнение с помощью клавиш Ctrl-Break.
                          Команда Go to Cursor [F4]
       -----------------------------------------------------------------
            Команда Go to Cursor (Перейти к курсору) выполняет программу
       до  той строки,  где находится курсор (в текущем окне Module (Мо-
       дуль) или области Code окна CPU  (Центральный  процессор)).  Если
       текущим  окном является окно Module,  курсор должен находиться на
       строке исходного кода внутри функции.
                           Команда Trace Into [F7]
       -----------------------------------------------------------------
           Команда Trace Into (Трассировка вглубь) выполняет одну строку
       исходного  кода или машинную инструкцию.  Если текущая строка со-
       держит вызов процедуры или функции,  то Турбо отладчик  выполняет

Турбо отладчик интерпретирует методы объектов


       трассировку этой процедуры.  Однако,  если текущим окном является
       окно CPU (Центральный процессор),  то выполняется  одна  машинная
       инструкция.
            Турбо отладчик интерпретирует методы объектов и функции-эле-
       менты классов,  как все другие процедуры и  функции.  Клавиша  F7
       позволяет трассировать их исходный код (если он доступен).
                           Команда Step Over [F8]
       -----------------------------------------------------------------
            Команда Step Over (Шаг с пропуском)  выполняет  одну  строку
       исходного кода или машинную инструкцию, минуя трассировку вызыва-
       емой процедуры или функции.  При  этом  обычно  выполняется  одна
       строка исходного текста программы.
            Однако, если текущим окном является окно CPU (ЦП), то выпол-
       няется только одна машинная инструкция.
            Если вы выполняете эту команду для  одной  исходной  строки,
       Турбо  отладчик  интерпретирует любой вызов процедуры или функции
       на этой строке, как часть самой строки, поэтому при завершении вы
       не окажетесь в начале одной из этих функций.  Вместо этого вы пе-

       TDeb 3.0 #1-3               = 128 =
       рейдете к следующей строке текущей подпрограммы или  к предыдущей
       программе, которая вызвала данную.
            Если вы  выполняете  эту команду для одной машинной инструк-
       ции, Турбо отладчик интерпретирует некоторые инструкции, как одну
       инструкцию, даже они приводят к выполнению нескольких инструкций.
       Приведем полный список инструкций, которые Турбо отладчик интерп-
       ретирует, как одну инструкцию:
            CALL            Вызов подпрограммы (ближний или дальний).
            INT             Вызов прерывания.
            LOOP            Управление циклом (CX - счетчик).
            LOOPZ           Управление циклом (CX - счетчик).
            LOOPNZ          Управление циклом (CX - счетчик).
            Шаг с  пропуском выполняется также для префиксов REP,  REPNZ

Шаг с  пропуском выполняется также


       или REPZ,  за которыми следуют  инструкции  CMPS,  CMPSW,  LODSB,
       MOVS, MOVSB, MOVSW, SCAS, SCASB, SCASW, STOS, STOSB или STOSW.
            Шаг с  пропуском выполняется также для префиксов REP,  REPNZ
       или REPZ,  за которыми следуют  инструкции  CMPS,  CMPSW,  LODSB,
       MOVS, MOVSB, MOVSW, SCAS, SCASB, SCASW, STOS, STOSB или STOSW.
            Команда Run¦Step Over (Выполнение¦Шаг с пропуском) интерпре-
       тирует вызов  метода  объекта или функцию-элемент класса как один
       оператор,  м выполняет для него шаг с пропуском,  как  при  любом
       другом вызове процедуры или функции.
                       Команда Execute To... [Alt-F9]
       -----------------------------------------------------------------
            Команда Execute To (Выполнение до...) выполняет  вашу  прог-
       рамму до адреса, который вы ввели в ответ на подсказку в диалого-
       вом окне.  Программа может не достичь этого адреса, если встреча-
       ется точка останова или вы прерываете выполнение.
                        Команда Until Return [Alt-F8]
       -----------------------------------------------------------------
            Команда Until Return (Выполнение до возврата управления) вы-
       полняет текущую процедуру или функцию,  пока она не возвратит уп-
       равление вызывающей программе.  Это полезно использовать при двух
       обстоятельствах:  если вы случайно вошли в процедуру или функцию,
       выполнение  которой  вас  не  интересует   (с   помощью   команды
       Run¦Trace (Выполнение¦Трассировка)  вместо  команды Run¦Step (Вы-
       полнение¦Шаг)),  или когда вы определили, что текущая функция ра-
       ботает правильно,  и не хотите медленно проходить  ее  оставшуюся
       часть.
                             Команда Animate...
       -----------------------------------------------------------------
            Команда Animate...  (Автоматизировать) выполняет непрерывную

       TDeb 3.0 #1-3               = 129 =

значений переменных. Прервать выполнение данной


       последовательность команд Trace (Трассировка).  Это позволяет вам
       наблюдать  за  текущим адресом в исходном коде и видеть изменение
       значений переменных. Прервать выполнение данной команды можно на-
       жатием любой клавиши.
            После выбора  команды  Run¦Animate (Выполнение¦Автоматизиро-
       вать) вам  выведется  подсказка для ввода значения интервала вре-
       менной задержки между последовательными трассировками  (в десятых
       долях секунды). По умолчанию используется значение 3.
                             Команда Back Trace
       -----------------------------------------------------------------
            Если вы выполняете трассировку программы (с помощью операти-
       вных клавиш F7 или Alt-F7),то данная команда изменяет порядок вы-
       полнения на обратный.  Это средство удобно использовать,  если вы
       проскочили место предполагаемой ошибки и хотите вернуться  к этой
       точке. Данная команда позволяет вам выполнить программу "в обрат-
       ном порядке" по шагам или до заданной (подсвеченной) точки в  об-
       ласти инструкций окна Execution History (Протокол выполнения).
                 Предупреждение: Здесь  имеются  некоторые  ограничения.
           См. раздел "Область инструкций".
                     Команда Instruction Trace [Alt-F7]
       -----------------------------------------------------------------
            Команда Instruction Trace (Трассировка инструкций) выполняет
       одну инструкцию. Ее можно использовать, когда вы хотите трассиро-
       вать прерывание, или когда вы находитесь в окне Module (Модуль) и
       хотите выполнять трассировку процедуры или функции, которая нахо-
       дится в модуле без отладочной информации  (например, библиотечной
       подпрограмме).
            Так как  вы  больше не будете находиться в начале строки ис-
       ходного теста, эта команда обычно переводит вас в окно CPU (Цент-
       ральный процессор).

Данная команда позволяет вам задать


                            Команда Arguments...
       -----------------------------------------------------------------
            Данная команда позволяет вам задать новые аргументы програм-
       мы. Более подробно это обсуждается далее.
                       Команда Program Reset [Ctrl-F2]
       -----------------------------------------------------------------
            Команда Program Reset (Сброс программы) перезагружает  отла-
       живаемую вами программу с диска.  Ее можно использовать в следую-
       щих случаях:
            - когда выполнение "зашло слишком далеко",  то есть пройдено
              то место, где имеется ошибка;

       TDeb 3.0 #1-3               = 130 =
            - когда  ваша  программа завершила работу и вы хотите запус-
              тить ее снова;
            - если вы работаете в  окне  CPU,  приостановили  выполнение
              программы с помощью Ctrl-Alt-SysRq и хотите завершить ее и
              начать сначала.
            - если вы уже загрузили прикладную программу, начали отладку
              с одной  или более библиотек динамической компоновки (DLL)
              и хотите отладить эти DLL.
            Если вы находитесь в окне Module или CPU,  то отладчик уста-
       навливает маркер текущей строки на начало программы, но экран ос-
       тается там,  где вы были при выборе команды Program Reset  (Сброс
       программы).  Такое  поведение  облегчает  установку курсора на то
       место, где вы были, и выполнение программы до данной строки.
            Если вы выбрали команду Program  Reset  только  потому,  что
       зашли  на один оператор дальше нужного места,  вы можете перемес-
       тить курсор в файле исходного кода вверх на несколько строк и на-
       жать клавишу F4, чтобы выполнить программу до этого места. В про-
       тивном случае вы  можете  (если  с  помощью  окна  View¦Execution
       History  включено средство полного протоколирования Full History)

выбрать вместо команды Program Reset


       выбрать вместо команды Program Reset (Сброс программы) для  возв-
       рата к ранее выполненному коду команду Run¦Back Trace (Выполнение
       ¦Обратная трассировка).

       TDeb 3.0 #1-3               = 131 =
                           Окно Execution History
       ------------------------------------------------------------------
            В Турбо отладчике имеется специальное средство,  которое на-
       зывается протоколом выполнения.  Это средство позволяет  отслежи-
       вать каждую выполняемую инструкцию (предполагается,  что вы трас-
       сируете код программы) и, кроме того, если вы хотите, фиксировать
       нажимаемые  вами  для достижения данного места программы клавиши.
       Вы можете просмотреть данные инструкции и выполнить их в обратном
       порядке  (отменить),  чтобы вернуться в ту точку,  где содержится
       предполагаемая ошибка.  Если у вас нет расширенной памяти,  Турбо
       отладчик может записывать около 400 инструкций.  При наличии рас-
       ширенной памяти он может записать примерно 3000 инструкций.
                -==Execution history==============3===[ ][ ]==¬
                ¦7229:04F5: push ax                           ¦
                ¦7229:04F6: push bp                           ¦
                ¦7229:04F7:-call---TCDEMO.PROCESSLINE.ISLETTER¦
                ¦<------------------------------------------->¦
                ¦Trace TPDEMO.122:  while i <= Length(S) do   ¦
                ¦Trace TPDEMO.125:  while (i <= Length(S)   an¦
                ¦Trace TPDEMO.PROCESSLINE.ISLETTER: begin     ¦
                L=============================================-
            Рис. 5.6 Окно Execution History
            В окне Execution History (Протокол выполнения), которое отк-
       рывается по команде View¦Execution History (Обзор¦Протокол выпол-
       нения) вы можете просмотреть протокол выполнения.
            Данное окно содержит две области:  область инструкций (ввер-

и которые вы можете отменить.


       ху) и область записи клавиш (нижняя область).
                             Область инструкций
       -----------------------------------------------------------------
            В области инструкций выводятся инструкции,которые уже выпол-
       нены и которые вы можете отменить. Выбрать нужную инструкцию мож-
       но, перемещая полосу (строку) подсветки.
            В протоколе выполнения отслеживаются только инструкции,  ко-
       торые выполняются по  команде  Trace  Into  (Трассировка  вглубь)
       (клавиша F7) или Instruction Trace (Трассировка инструкций) (кла-
       виши Alt-F7).  Если вы не встретите ни одну из перечисленных выше
       (в предыдущих разделах) команд,  там отслеживаются также инструк-
       ции, выполняемые по команде Step  Over  (Шаг  с  пропуском).  Как
       только  вы  используете  команду  Run (Выполнение) или выполняете
       прерывание,  протокол инструкций удаляется. (Когда вы вернетесь к
       трассировке, инструкции снова будут фиксироваться.)
            Обратную трассировку вызова прерывания выполнять нельзя.

       TDeb 3.0 #1-3               = 132 =
            Если вы  выполняете шаг с пропуском при вызове процедуры или
       функции, то вы не сможете выполнить обратную трассировку инструк-
       ций, предшествующих возврату управления.
            Обратная трассировка  инструкций,  работающих с портами,  не
       действует, так как вы не  можете  отменить  выполненные  операции
       чтения или записи.
                      Локальное меню области инструкций
       -----------------------------------------------------------------
                                 ---------------------------¬
            Проверка             ¦ Inspect                  ¦
            Обратное выполнение  ¦ Reverse execute          ¦
                                 +--------------------------+
            Полный протокол      ¦ Full history          No ¦
                                 L---------------------------

Локальное меню области инструкций содержит


            Локальное меню области инструкций содержит три команды.
                               Команда Inspect
       -----------------------------------------------------------------
            Команда Inspect (Проверка) перемещает вас к команде, подсве-
       ченной в области инструкций.  Если это строка исходного кода, вам
       показывается эта строка в окне Module (Модуль). Если нет исходно-
       го кода, то открывается окно CPU (ЦП) и инструкция подсвечивается
       в области кода.
                      Команда Reverse Execute [Alt-F4]
       -----------------------------------------------------------------
            Данная команда (можно также использовать оперативные клавиши
       Alt-F4) выполняет программу в обратном порядке до того места, ко-
       торое подсвечено в области инструкций. Если вы выбрали строку ис-
       ходного кода, то вы возвращаетесь в окно Module, в противном слу-
       чае выводится  окно CPU (ЦП) с подсветкой на инструкции в области
       кода.
                 Предупреждение: Вы не можете выполнять в  обратном  по-
            рядке ту часть программы, которую вы не трассировали. Напри-
            мер,  если вы установите точку останова и затем нажмете кла-
            вишу F9, чтобы выполнить программу до точки останова, то ваш
            протокол выполнения будет потерян. В этом случае для восста-
            новления  ситуации можно использовать средство повторной от-
            работки нажатых клавиш (окна Execution History).  Для  этого
            нужно перезагрузить  программу и выполнить ее до данной точ-
            ки.
                 Предупреждение: Инструкция INT приводит к потере преды-
            дущего протокола выполнения. Вы не можете выполнить эту инс-

       TDeb 3.0 #1-3               = 133 =
            трукцию  в обратном порядке,  если не использовалась трасси-
            ровка прерывания (клавиши Alt-F7).
            Следующие инструкции  не приводят к потере протокола регист-

Если вы попытаетесь выполнить данные


       рации, но имеют необратимый эффект,  поэтому отменить их  нельзя.
        Если вы попытаетесь выполнить данные инструкции в обратном поряд-
       ке, могут возникнуть непредсказуемые эффекты.
                     IN                       INSW
                     OUT                      OUTSB
                     INSB                     OUTSW
                   Команда Full History (Полный протокол)
       -----------------------------------------------------------------
            Это команда-переключатель.  Если она установлена в состояние
       On (Включено), то обратная трассировка разрешена. В состоянии Off
       (Выключено) обратная трассировка запрещена.
                     Область регистрации нажатий клавиш
       -----------------------------------------------------------------
            Даже если  вы  случайно уничтожили свой протокол выполнения,
       вы все равно сможете вернуться обратно к данной  точке программы.
       Для этого должно быть разрешено средство регистрации нажатий кла-
       виш.
            Регистрация нажатий клавиш в сочетании со средством обратно-
       го выполнения программы предоставляет вам различные способы возв-
       рата во время сеанса отладки к предыдущей точке.  При регистрации
       нажатий  клавиш регистрируются все клавиши,  которые вы нажимаете
       (как при вводе команд Турбо отладчика, так и при взаимодействии с
       отлаживаемой программой).  Клавиши  регистрируются в файле с име-
       нем имя_программы.TDK, где "имя_программы" - это имя отлаживаемой
       программы.
            Для повторного выполнения нажатий клавиш для возврата к пре-
       дыдущей  точке  сеанса  отладки  используйте  нижнюю область окна
       Execution History (Протокол выполнения). Каждая строка в протоко-
       ле выполнения показывает причину, по которой Турбо отладчик полу-
       чил управление (точка останова, трассировка и т.д.) и текущий ад-
       рес программы в этот момент.

исходного кода, то выводится также


Если этот адрес соответствует строке
       исходного кода, то выводится также эта строка. В противном случае
       дисассемблируется инструкция по данному адресу.
            Регистрацию последовательности  нажатий клавиш разрешает па-
       раметр командной строки -k. Для того, чтобы он по умолчанию уста-
       навливался  в  значение  On (Включено),  можно также использовать
       утилиту TDINST.
              Локальное меню области регистрации нажатий клавиш
       -----------------------------------------------------------------

       TDeb 3.0 #1-3               = 134 =
                                               --------------------¬
                 Проверка                      ¦ Inspect           ¦
                 Восстановление нажатий клавиш ¦ Keystroke restore ¦
                                               L--------------------

       TDeb 3.0 #1-3               = 135 =
                               Команда Inspect
       -----------------------------------------------------------------
            Если вы переведете подсветку на строку в области регистрации
       нажатий клавиш,  а затем  выберите  из  локального  меню  команду
       Inspect (Проверка),  то выводится окно Module (Модуль),  курсор в
       котором установлен на той строке исходного кода,  где была нажата
       клавиша.
            Если данная  строк (в области регистрации нажатий клавиш) не
       соответствует позиции в исходном  коде,  то  выводится  окно  CPU
       (ЦП), подсветка в котором позиционирована на инструкции.
                          Команда Reystroke Restore
       -----------------------------------------------------------------
            Если вы подсветите строку в области регистрации нажатий кла-
       виш,  а  затем выберите команду Кeystroke Restore (Восстановление
       нажатий клавиш),  то Турбо отладчик перезагрузит вашу программу и
       запустит ее до выделенного (подсвеченного) контекста. Это особен-
       но полезно использовать,  когда вы выполнили команду Турбо отлад-

В интерактивных программах скорейший способ


       чика, которая удалила протокол выполнения.
                       Прерывание выполнения программы
       -----------------------------------------------------------------
            В интерактивных программах скорейший способ добраться до оп-
       ределенного  места  в  вашей  программе заключается иногда в том,
       чтобы просто запустить ее и взаимодействовать с ней,  пока она не
       достигнет нужной части кода, а затем прервать выполнение. Особен-
       но это касается того случая,  когда та часть кода, которую вы хо-
       тите проверить, вызывается несколько раз до того момента, который
       вас интересует.
            Может также  потребоваться  прервать  выполнение  программы,
       когда  по каким-либо причинам управление не передается отладчику.
       Это может произойти когда часть кода содержит  бесконечный  цикл:
       вы ожидаете, что эта часть кода будет выполнена и поэтому устано-
       вили точку останова, но она не достигается.
                             Клавиши Ctrl-Break
       -----------------------------------------------------------------
            Это сочетание клавиш почти всегда прерывает вашу программу и
       возвращает управление отладчику. Эти клавиши действуют, как толь-
       ко  будут нажаты,  поэтому вы иногда можете оказаться в непредви-
       денной части кода.  Это может быть ПЗУ клавиатуры базовой системы
       ввода-вывода,  если  ваша программа ожидает нажатия клавиши,  или
       любая инструкция в выполняемом цикле. Клавиши Ctrl-Break не могут
       отменить следующие два условия (и если возникнет одно из них, вам
       придется перезагрузить систему):
          - вы попали в цикл, когда запрещены прерывания;

       TDeb 3.0 #1-3               = 136 =
          - произошел сбой системы из-за выполнения ошибочного кода.
            Если вы отлаживаете программу, которая сама должны обрабаты-
       вать клавиши Ctrl-Break,  вы можете сменить  клавишу  прерывания.

Для этого можно воспользоваться программой


       Для этого можно воспользоваться программой TDINST.  Значение кла-
       виши прерывания можно присвоить любой обычной клавише  (она будет
       действовать в сочетании с клавишей Ctrl).
                      Завершение работы вашей программы
       -----------------------------------------------------------------
            Когда ваша программа завершает работу, и вы из нее выходите,
       отладчик снова получает управление. Он выводит сообщение, показы-
       вающее код завершения вашей программы, который будет возвращаться
       в DOS.  Когда ваша программа завершила работу, до ее перезагрузки
       с  помощью команды Run¦Program Reset (Выполнение¦Сброс программы)
       вы не можете воспользоваться ни одной из команд меню Run  (Выпол-
       нение).
            Когда ваша программа завершила работу, сегментные регистры и
       стек обычно имеют некорректные значения,  поэтому не анализируйте
       и не модифицируйте значения переменных после завершения  програм-
       мы.
                        Возобновление сеанса отладки
       -----------------------------------------------------------------
            В Турбо отладчике имеется несколько средств, позволяющих  по
       возможности  гладко возобновить сеанс отладки.  При отладке прог-
       раммы легко забрести слишком далеко и проскочить ошибку. При этом
       лучше возобновить отладку и приостановить выполнение не несколько
       команд раньше (до ошибки).
            В большинстве отладчиков для этого приходится вводить  слиш-
       ком длинную последовательность команд.  В Турбо отладчике же име-
       ется мощное средство,  позволяющее фиксировать нажатия клавиш  во
       время сеанса отладки (вести протокол),  а затем "проигрывать" все
       заново по вашему запросу.
            Турбо отладчик также позволяет вам перезагрузить программу с
       диска с теми же аргументами командной строки.
                           Перезагрузка программы

с диска со всеми  данными,


       -----------------------------------------------------------------
            Чтобы перезагрузить отлаживаемую программу,  используйте ко-
       манду  Run¦Program Reset (Выполнение¦Сброс программы).  Турбо от-
       ладчик перезагружает программу с диска со всеми  данными, которые
       вы  могли добавить с момента последнего сохранения на диске.  Это
       наиболее надежный способ перезапуска программы. Возобновление пу-
       тем  выполнения  с  начала  программы рискованно,  так как многие
       программы ожидают инициализации данных с образа программы на дис-

       TDeb 3.0 #1-3               = 137 =
       ке.
            Заметим, что команда Program Reset (Сброс программы)  остав-
       ляет точки останова и выражения просмотра в неприкосновенности.
        Запись нажатий клавиш в макрокоманду и повторная их отработка
       -----------------------------------------------------------------
            Для записи  часто  используемой последовательности клавиш вы
       можете использовать специальное макросредство - клавиатурную мак-
       рокоманду. При отладке для достижения определенного места в прог-
       рамме часто повторяется одна и та же  последовательность  команд.
       Это может быть довольно утомительным.
            Чтобы обойти данную проблему,  вы можете определить  клавиа-
       турную макрокоманду, которая будет фиксировать все клавиши, нажи-
       маемые вами с момента,  когда вы запускаете отладчик  и  до  того
       момента, когда вы подошли к нужному месту программы. В этом месте
       вы можете приостановить запись клавиш. Если вы захотите вернуться
       к данному месту программы,  все,  что для этого требуется  -  это
       просто  повторная  отработка  клавиатурной  макрокоманды (нажатий
       клавиш).
            Этот метод нельзя,  однако,  использовать для записи клавиш,
       которые требуется нажимать при работе с вашей программой.  Вы мо-
       жете записывать только командные клавиши Турбо отладчика.