                                                                               
                           Оглавление                                  
 = 1 =

 Приложение A  Параметры командной строки........................2
 Приложение B   Технические замечания............................3
 Приложение C   Зарезервированные слова встроенного
  ассемблера.....................................................7
 Приложение D   Настройка отладчика Turbo Debugger..............10
   Запуск программы TDINST......................................11
   Установка параметров отображения отладчика Turbo Debugger....13
   Настройка параметров работы отладчика........................16
   Установка режима дисплея.....................................20
   Параметры командной строки и эквиваленты настройки...........21
   Завершение работы с программой...............................22
 Приложение E   Удаленная отладка...............................24
 Приложение F   Блоки диалога и сообщения об ошибках............32
   Блоки диалога................................................32
   Сообщения об ошибках.........................................40
     Фатальные ошибки...........................................40
     Сообщения об ошибках.......................................41
     Сообщения об ошибках.......................................48
   Информационные сообщения.....................................60
 Приложение G   Использование отладчика Turbo Debugger с
  различными языками............................................62
   Советы по отладке программ на языке Turbo C..................62
   Советы по отладке программ на языке Turbo Assembler..........63
   Советы по отладке программ на языке Turbo Pascal.............64
   Советы по использованию окна процессора для программ на
    Паскале.....................................................66

 = 2 =

                   Приложение A  Параметры командной строки                    
 -----------------------------------------------------------------

      При запуске  отладчика  из  командной  строки  DOS вы можете
 настроить его,  используя некоторые параметры  командной  строки.
 Ниже приведен формат командной строки для запуска отладчика.

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

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


      Параметры командной строки Turbo Debugger     Таблица А.1
      ------------------------------------------------------------
      Параметр                      Назначение
      ------------------------------------------------------------
      -cимя_файла    Файл конфигурации, используемый при загрузке
      -do            Другой дисплей
      -dp            Переключение страниц
      -ds            Подкачка содержимого экрана пользователя
      -h,-?          Отображение экрана подсказки,
                     перечисление всех параметров
      -i             Переключение идентификатора процесса
      -k             Включение записи нажатий клавиш
      -l             Запуск ассемблера
      -mN            Размер динамической области (кучи) в Кб
      -p             Включение поддержки "мыши"
      -r             Отладка на удаленной системе, COM1, медленная
                     связь
      -rpN           Порт COM для связи с удаленной системой
      -rsN           Скорость связи: 1 - медленная, 2 - средняя, 3 -
                     быстрая
      -sc            Отмена проверки регистра
      -sdдир         Директория, содержащая исходный файл
      -vg            Полное сохранение графического образа экрана
      -vn            Запрещение режима отображения в 43/50 строк
      -vp            Сохранение палитры EGA
      -yN            Установка размера оверлейного пула (К)
      -yeN           Установка размера оверлейной области в
                     расширенное (EMS) памяти,
                     N=число страниц по 16К
      ------------------------------------------------------------



 = 3 =

                     Приложение B   Технические замечания                      
 -----------------------------------------------------------------

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

      Часть приводимой здесь информации  описывает  взаимодействие
 Turbo Debugger с DOS, аппаратным обеспечением и вашей программой.
 Это поможет вам понять , каким образом может измениться поведение
 вашей программы при выполнении ее в среде Turbo Debugger.

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

 Изменение адреса загрузки и объема свободной памяти
 -----------------------------------------------------------------

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

      Если вы работаете на компьютере  с  процессором  80386,  для
 устранения   описанных   выше   проблем  вы  можете  использовать
 программу виртуальной отладки TD386.  Для получения информации  о
 виртуальной отладке обратитесь к главе 15.

 Фатальный сбой системы
 -----------------------------------------------------------------

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

      Например, изменение  вектора прерывания аппаратного таймера,
 находящегося в  ячейке  0000:0040,  практически  всегда  вызывает
 проблемы.

 Трассировка внутри DOS и переключение идентификатора процесса

 = 4 =

 -----------------------------------------------------------------

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

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

 Использование арифметического сопроцессора 8087/80287 и эмулятора
 -----------------------------------------------------------------

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

 Прерывания, используемые отладчиком Turbo Debugger
 -----------------------------------------------------------------

      Для отладки программы Turbo Debugger перехватывает некоторые
 векторы  прерывания.  Приведенные  ниже  пояснения  помогут   вам
 определить,  могут ли возникнуть конфликты между вашей программой
 и отладчиком.

      Прерывание 1/Прерывание 3

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

      Прерывание 2

      Многие аппаратные отладчики используют  это  прерывание  для
 формирования  признака  выполнения некоторого условия.  Если ваша

 = 5 =

 программа перехватывает это прерывание,  эти платы и их  драйверы
 устройств   не   смогут   правильно   работать.  Если  вы  должны
 перехватывать  это  прерывание,   возвращайте   его   предыдущему
 "владельцу", если вы не хотите его обслуживать.

      Прерывание 9

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

 Отладка с использованием прерываний INT3 и INT1
 -----------------------------------------------------------------

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

 Сохранение отображения и переключение режимов
 -----------------------------------------------------------------

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

 Использование памяти
 -----------------------------------------------------------------

      Когда вы запускаете отладчик,  DOS загружает  его  в  первую
 свободную  область  памяти,  находящуюся  над  DOS и резидентными
 программами.  Затем отладчик выделяет рабочий стек и динамическую
 область  над своим кодом программы.  Далее в памяти располагается
 таблица обозначений отлаживаемой программы,  за  которой  следует
 сама отлаживаемая программа.

      При возврате  в  DOS  отладчик  освобождает память,  которую
 занимала  таблица  обозначений  и  отлаживаемая  программа.  Если
 программа  выделяла  какие-либо  блоки  памяти  с помощью функции

 = 6 =

 выделения памяти операционной системы DOS  (48),  Turbo  Debugger
 освободит и эту память.

 Поддержка расширенной памяти
 -----------------------------------------------------------------

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

      Если ваша программа должна использовать всю память EMS, либо
 если ваш  опыт  показывает,  что  между  вашей программой и Turbo
 Debugger возникают конфликты, когда они оба используют расширенную
 память, вы   можете   отменить   использование   Turbo   Debugger
 расширенной памяти для таблицы символических имен.  Это позволяет
 сделать установочная   утилита   TDINST,   либо   параметр  -ye0,
 отменяющий кеширование оверлейных модулей в EMS.

 Сохранение и восстановление векторов прерывания
 -----------------------------------------------------------------

      Отладчик Turbo  Debugger  поддерживает  три  различные копии
 первых 48 векторов прерывания в памяти с младшими адресами (от 00
 до 2F).

      При запуске  отладчика  из  командной строки DOS выполняется
 копирование этих  векторов.  Эти  вектора  восстанавливаются  при
 возврате  в  DOS  с  помощью  команды File/Quit (или Alt-X).  Эти
 вектора также восстанавливаются, если вы используете команду File
 /OS Shell для ввода команды DOS во время отладки программы.

      Второй набор   векторов   -   это  вектора  отладчика  Turbo
 Debugger.  Они используются,  когда работает  сам  отладчик.  Эти
 вектора  восстанавливаются  каждый  раз,  когда отладчик получает
 управление после работы отлаживаемой программы.

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



 = 7 =

         Приложение C   Зарезервированные слова встроенного ассемблера         
 -----------------------------------------------------------------


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

 Таблица C.1 Мнемонические обозначения команд процессоров
             8086/80186/80286
 -----------------------------------------------------------------

 AAA                 INC                 LIDT**              REPNZ
 AAD                 INSB*               LLDT**              REPZ
 AAM                 INSW*               LMSW**              RET
 AAS                 INT                 LOCK                REFT
 ADC                 INTO                LODSB               RQL
 ADD                 IRET                LODSW               ROR
 AND                 JB                  LOOP                SAHF
 ARPL**              JBE                 LOOPNZ              SAR
 BOUND*              JCXZ                LOOPZ               SBB
 CALL                JE                  LSL**               SCASB
 CLC                 JL                  LTR**               SCASW
 CLD                 JLE                 MOV                 SGDT**
 CLI                 JMP                 MOVSB               SHL
 CLTS**              JNB                 MOVSW               SHR
 CMC                 JNBE                MUL                 SLDT**
 CMP                 JNE                 NEG                 SMSW**
 CMPSB               JNLE                NOP                 STC
 CMPSW               JNO                 NOT                 STD
 CWD                 JNP                 OR                  STI
 DAA                 JO                  OUT                 STOSB
 DAS                 JP                  OUTSB*              STOSW
 DEC                 JS                  OUTSW*              STR**
 DIV                 LAHF                POP                 SUB
 ENTER*              LAR**               POPA*               TEST
 ESC                 LDS                 POPF                WAIT
 HLT                 LEA                 PUSH                VERR**
 IDIV                LEAVE*              PUSHA*              VERW**
 IMUL                LES                 PUSHF               XCHG
 IN                  LGDT**              RCL                 XLAT
                                                             XOR
 *  - доступны только при работе с процессорами 186 и 286
 ** - доступны только при работе с процессором 286
 -----------------------------------------------------------------

 Таблица C.2 Мнемонические обозначения команд процессора 80386
 -----------------------------------------------------------------
 BSF                 LSS                 SETG                SETS
 BSR                 MOVSX               SETL                SHLD

 = 8 =

 BT                  MOVZX               SETLE               SHRD
 BTC                 POPAD               SETNB               CMPSD
 BTR                 POPFD               SETNE               STOSD
 BTS                 PUSHAD              SETNL               LODSD
 CDQ                 PUSHFD              SETNO               MOVSD
 CWDE                SETA                SETNP               SCASD
 IRETD               SETB                SETNS               INSD
 LFS                 SETBE               SETO                OUTSD
 LGS                 SETE                SETP                JECXZ
 -----------------------------------------------------------------

 Таблица C.3 Мнемонические обозначения команд процессора 80486
 -----------------------------------------------------------------
 BSWAP               INVLPG
 CMPXCHG             WBPINVD
 INVD                XADD
 -----------------------------------------------------------------

 Таблица С.4 Регистры 80386
 -----------------------------------------------------------------
 EAX                 EDI
 EBX                 EBP
 ECX                 ESP
 EDX                 FS
 ESI                 GS
 -----------------------------------------------------------------

 Таблица C.5 Регистры центрального процессора
 -----------------------------------------------------------------
 Байтовые регистры            ah, al, bh, bl, ch, cl, dh, dl
 Регистры размером в слово    ax, bx, cx, dx, si, di, sp, bp
 Сегментные регистры          cs, ds, es, ss
 Регистры с плавающей         st, st(0), st(1), st(2), st(3), st(4),
 точкой                       st(5), st(6), st(7)
 -----------------------------------------------------------------

 Таблица С.6 Специальные зарезервированные слова
 -----------------------------------------------------------------
                     WORD PTR            TBYTE PTR
                     BYTE PTR            NEAR
                     DWORD PTR           FAR
                     QWORD PTR           SHORT
 -----------------------------------------------------------------


 Таблица O.1 Мнемонические обозначения команд числового
             сопроцессора 8087/80287
 -----------------------------------------------------------------

 FABS                FIADD               FLDL2E              FST
 FADD                FICOM               FLDL2T              FSTCW
 FADDP               FICOMP              FLDPI               FSTENV

 = 9 =

 FBLD                FIDIV               FLDZ                FSTP
 FBSTP               FIDIVR              FLD1                FSTSW*
 FCHS                FILD                FMUL                FSUB
 FCLEX               FIMUL               FMULP               FSUBP
 FCOM                FINCSTP             FNOP                FSUBR
 FCOMP               FINIT               FNSTS**             FSUBRP
 FDECSTP             FISTP               FPREM               FWAIT
 FDISI               FISUB               FPTAN               FXAM
 FDIV                FISUBR              FRNDINT             FXCH
 FDIVP               FLD                 FRSTOR              FXTRACT
 FDIVR               FLDCW               FSAVE               FYL2X
 FDIVRP              FLDENV              FSCALE              FYL2XP1
 FENI                FLDLG2              FSETPM*             F2XM1
 FFREE               FLDLN2              FSQRT

 *  - доступны только при работе с числовым сопроцессором 287
 ** - при работе с сопроцессором 80287 в командах fstsw и fnstsw
      кроме обычных операндов, расположенных в памяти, в качестве
      операнда может использоваться регистр AX.
 -----------------------------------------------------------------

 Таблица O.2 Мнемонические обозначения команд сопроцессора 80387
 -----------------------------------------------------------------
                     FCOS                FUCOM
                     FSIN                FUCOMP
                     FPREM1              FUCOMPP
                     FSINCOS
 -----------------------------------------------------------------




 = 10 =

               Приложение D   Настройка отладчика Turbo Debugger               
 -----------------------------------------------------------------

      Отладчик Turbo  Debugger готов к работе сразу после создания
 рабочих копий файлов,  находящихся  на  дистрибутивных  дискетах.
 Однако  вы можете настроить по своему усмотрению многие параметры
 отладчика,  используемые  по  умолчанию,  с   помощью   программы
 настройки   TDINST.EXE.   Вы  также  можете  выполнить  некоторую
 настройку  с  помощью  параметров  командой  строки  при  запуске
 отладчика из DOS.  Если, работая с отладчиком, вы обнаружите, что
 часто используете одни и те  же  параметры  командой  строки,  вы
 можете  сделать  эти  параметры  постоянными  с помощью программы
 настройки.

      Программа TDINST позволяет настраивать  следующие параметры:

      -  цвета окон, блоков диалога и меню;

      - параметры отображения:  режим переключения экрана,  формат
 отображения целых чисел,  начальное отображение (исходного,  либо
 ассемблированного  кода),  число  строк   ,   ширину   табуляции,
 максимальные  размеры  окна слежения,  быстрое обновление экрана,
 режим отображения 43/50  строк,  полное  сохранение  графического
 образа экрана и длину журнального списка;

      - команду запуска текстового редактора,  а также директории,
 просматриваемые в поисках  исходного  файла  и  файлов  подсказки
 Turbo Debugger и конфигурации;

      -  директории, в  которых будет  производиться  поиск  исходных
         файлов;

      -  параметры клавиатуры:  клавишу прерывания работы программы и
         активные клавиши команд;

      - параметры   ввода   пользователя   и   запросов:   клавиша
 прерывания,  длина списка истории выполнения, звуковой сигнал при
 возникновении ошибки, мышь, а также активные клавиши;


      - отладка исходных  файлов:  опции  задания  языка  и  учета
 регистра.

      - перехват     немаскируемых     прерываний,    переключение
 идентификатора процесса операционной системы  DOS,  использование
 расширенной  памяти  типа  EMS  для хранения таблицы обозначений,
 удаленная  отладка,  размер  памяти  переключения   на   оболочку
 операционной системы и размер памяти для символических имен;

      - Режим дисплея.



 = 11 =

                            Запуск программы TDINST                            
 -----------------------------------------------------------------

      -------------------
      Colors            >
      Display...
      Options           >
      Mode for display  >
      Save              >
      Quit
      -------------------

      Для того чтобы  запустить  программу  настройки,  введите  в
 ответ  на  приглашение  операционной системы команду TDINST.  Для
 выбора команды из меню можно либо нажать первую  выделенную букву
 нужного  пункта  меню,  либо  подвести к нему выделяющий курсор с
 помощью клавиш "Стрелка вверх" и "Стрелка вниз" и  нажать клавишу
 Enter.  Например,  для того чтобы изменить параметры отображения,
 можно нажать клавишу D.  Таким же образом можно  выбирать  другие
 пункты меню в программе настройки. Для возврата в предыдущее меню
 надо нажать клавишу Esc.  Для возврата в главное меню  вам  может
 потребоваться нажать клавишу Esc несколько раз.

 Настройка цветов отображения
 -----------------------------------------------------------------

      Находясь в главном меню,  выберите Colors,  чтобы вызвать на
 экран  меню  настройки  цветов  (Colors).  После этого вы сможете
 выбрать  одну  из  двух  возможностей:  Customize  (настроить)  и
 Default  color  set  (набор  цветов,  заданный  по умолчанию),  2
 default color set (2-ой набор цветов, заданный по умолчанию).

 Настройка цветов экрана   ---------------------------------------

      Если вы  выберете  команду  настройки  цветов,   на   экране
 появится третье меню со следующими пунктами:

 Windows
 -------

      Для настройки окон выберите команду Windows.  При этом будет
 открыто четвертое  меню,  позволяющее  выбрать тип настраиваемого
 окна: Text,  Data,  Low  Level  (например,  окно  CPU)  и   Other
 (например, Breakpoints). Выбор одной из данных опций дает вам еще
 одно меню со  списком  элементов  окна,  а  также  пару  примеров
 данного окна   (один   пример   -  активного  окна,  а  другой  -
 неактивного), на которых вы можете пробовать различные комбинации
 цветов.


      После того,  как  вы  выберете  элемент,  который  вы хотите
 изменить, поверх меню на экране появится цветовая палитра. Справа

 = 12 =

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

      Примечание: Turbo Debugger поддерживает три  таблицы цветов:
 для  цветного,  черно-белого и монохромного мониторов.  Вы можете
 одновременно  изменять  только   один   набор   цветов,   который
 соответствует   текущему   видеорежиму   и  аппаратным  средствам
 монитора.  Так,  если вы работаете на цветном мониторе  и  хотите
 настроить  цвета для черно-белого изображения,  вы должны сначала
 установить черно-белый режим,  введя в ответ  на  приглашение  DOS
 команду MODE BW80, а затем запустить программу TDINST.

 Блоки диалога
 -------------

      При выборе из меню Customize команды Dialog  появляется меню
 со списком элементов блоков диалога и меню,  а также пример блока
 диалога, с  которым  вы   можете   поэкспериментировать,   пробуя
 различные цвета.

      Как и  для  меню  Windows,  выбор  элемента из текущего меню
 открывает палитру,  в которой можно выбрать цвета для отображения
 каждого элемента блока диалога.

 Меню
 ----

      ----------------
      Menu background
      Standard item
      Active item
      Hot letter
      ----------------

      При выборе из меню Customize элемента Menu появляется меню с
 опциями отображения элементов меню,  а также пример меню.  Вы бор
 элемента меню вызывает появление цветовой палитры.

 Screen
 ------

      --------------------------
      Pattern for background   >
      --------------------------
      Pattern background
      Pattern foreground
      Window move background
      --------------------------

 = 13 =

      Window move foreground
      --------------------------

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

 Цвета по умолчанию   --------------------------------------------

      При выборе из меню Colors пункта Default Color Set на экране
 появляются активное и  неактивное  меню,  и  вы  можете  сравнить
 полученный результат с установками, выполняемыми по умолчанию.
           Установка параметров отображения отладчика Turbo Debugger           
 -----------------------------------------------------------------

      Находясь в главном меню,  выберите пункт Display,  который в
 свою очередь вызовет блок диалога Display Options

      Некоторые из параметров отображения можно задать при запуске
 Turbo Debugger из командной строки,  а некоторые  устанавливаются
 только программой  TDINST.  Ниже  приводится  таблица  параметров
 командной строки и соответствующие установки TDINST.

 Параметр Display Swapping   -------------------------------------

      Если вы  хотите  задать  режим  переключения  между  экраном
 отладчика и экраном выполнения программы,  bиспользуйте для этого
 селективные кнопки Display Swapping  (переключение  изображения).
 Можно выбрать один из трех режимов:

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

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

      Always    Переключение на экран пользователя производится при
                каждом запуске отлаживаемой программы. Используйте
                этот режим в том случае, если в режиме Smart
                отладчику не удается отследить все случаи вывода на
                экран вашей программы. Если вы выберете этот режим,
                изображение на экране будет мелькать при выполнении
                каждого шага отладки программы, поскольку экран
                отладчика будет на короткое время заменяться экраном

 = 14 =

                вашей программы.

 Параметр Integer Format   ---------------------------------------

      Селективные кнопки  Integer  Format  предназначены для того,
 чтобы задать режим отображения на экране  целых  чисел.  Возможен
 один из трех режимов:

      Hex       Отображение целых чисел в шестнадцатиричном формате.
      Decimal   Отображение целых чисел в десятичном формате.
      Both      Отображение целых чисел в обоих форматах.

 Параметр Beginning Display   ------------------------------------

      Селективные кнопки   Beginning   Display   определяют   язык
 программирования, на котором ваша  программа  будет  отображаться
 при запуске Turbo Debugger. Имеются следующие варианты:

      Assembler      Отображение ассемблерного текста; отлаживаемая
                     программа не начинает выполняться, и в окне
                     процессора отображается первая команда
                     программы.

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

 Параметр Screen Lines  ------------------------------------------

      Эти селективные   кнопки   производят   переключение   между
 запуском отладчика в 25- и 43/50-строчным режиме отображения.

      43/50-строчный режим поддерживается только адаптерами  EGA и
 VGA.

 Параметр Tab Size   ---------------------------------------------

      Данный блок ввода позволяет задать количество столбцов между
 табуляциями  при отображении текста  или  содержимого  исходного
 файла.  Программа  запросит у вас количество столбцов (число от 1
 до 32). Умолчанием является 8.

 Параметр Maximmum Tiled Watch   ---------------------------------

      Данный блок ввода  позволяет  задать  количество  строк,  на
 которое  может  расширяться  окно  слежения  при  работе в режиме
 расширения. Программа запросит у вас количество строк (число от 1
 до 20).

 Параметр Fast Screen Update   -----------------------------------


 = 15 =

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

 Параметр Permit 43-/50-Line Mode   ------------------------------

      Данный блок переключения позволяет определить,  разрешено ли
 включение 43-/50-строчного режима.  Если вы запретите этот режим,
 вы  сэкономите  примерно  8К  памяти,  поскольку  в  этом  режиме
 отладчик должен отводить под буфер окна больше памяти.  Это может
 оказаться  полезно  при  отладке  очень  большой  программы,  для
 выполнения  которой требуется максимально возможное объем памяти.
 Если этот 43-/50-строчный  режим  запрещен,  вы  не  сможете  его
 включить, даже если ваш компьютер его поддерживает.

 Параметр Complete Graphics Save   -------------------------------

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

 Параметр User Screen Updating   ---------------------------------

      Селективные кнопки User Screen Updating  (обновление  экрана
 пользователя)  позволяют  задать режим обновления изображения при
 переключениях  между  экраном  отладчика  и  экраном   выполнения
 программы.   Можно   выбрать  один  из  трех  режимов  обновления
 изображения:

 Flip Pages     Образ экрана отладчика хранится в отдельной экранной
                странице. Этот режим может использоваться только в
                том случае, если адаптер дисплея поддерживает
                несколько экранных страниц (например, адаптер CGA,
                EGA или VGA). Этот режим нельзя использовать при
                работе на монохромном дисплее. Этот режим нормально
                работает при отладке подавляющего большинства
                программ; он является наиболее быстрым, но может
                нарушить работу программы, использующей несколько
                экранных страниц.


 = 16 =

 Swap           Используется один адаптер дисплея и одна экранная
                страница. Содержимое экрана отладчика и экрана
                пользователя переключается программными средствами.
                Это самый медленный способ переключения экранов,
                однако он является самым защищенным и безопасным.
                Выбирайте этот режим при отладке программ,
                использующих несколько экранных страниц. Используйте
                его также в том случае, если вам требуется временный
                выход в DOS во время отладки, или если в памяти
                находятся какие-либо резидентные программы (такие как
                SideKick).

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

 Параметр Log List Length    -------------------------------------

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

      --------------------
      Directories...
      Input & prompting...
      Source debugging...
      Mescellaneous...
      --------------------

      Команда главного меню Options открывает меню опций, которое
 в свою очередь открывает для вас блок диалога.

 Directories...  -------------------------------------------------

      Данный блок диалога  содержит  блоки  ввода,  в  которых  вы
 можете ввести:


 Editor program name (имя программы-редактора)
 ---------------------------------------------

      Позволяет задать  команду  DOS,  которая запускает текстовый
 редактор. Это даст возможность отладчику Turbo Debugger запускать
 ваш   любимый   текстовый  редактор,  когда  в  процессе  отладки
 программы вы захотите внести  какие-либо  изменения  в  некоторый
 файл.  В  конец  этой команды Turbo Debugger добавит через пробел
 имя файла, который требуется отредактировать.

 = 17 =


 Source Directories (Директории исходных файлов)
 -----------------------------------------------

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

 Turbo Directory (Директория Turbo)
 ----------------------------------

      Позволяет задать директорию,  в которой Turbo Debugger будет
 искать свой файл подсказки и файл конфигурации.


 Input and Prompting...   ----------------------------------------

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

 History List Length ( Длина списка истории)
 -------------------------------------------

      Данный блок ввода  позволяет  задать  ,  сколько  предыдущих
 элементов ввода должно записываться в блоке ввода списка истории.

 Interrupt Key (клавиша прерывания)
 ----------------------------------

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

 Set Key (установка клавиши)
 ---------------------------

      Если вы выбрали Other,  нажмите кнопку Set  Key  для  выбора
 фактической клавиши   прерывания.  Вам  будет  выдан  запрос  для
 соответствующей установки клавиши прерывания.

 Mouse Enabled (включение поддержки мыши)
 ----------------------------------------

      Данный блок  переключения  управляет  тем,  будет  ли  Turbo
 Debuggerпо умолчанию поддерживать "мышь".

 Beep on Error  (звуковой сигнал при ошибке)

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



 = 18 =

 Keystroke Recording

      Данный блок  проверки  определяет,  будет  ли  по  умолчанию
 выполняться автоматическая запись нажатий клавиш в окне Execution
 History.

 Control-Key Shortcuts (активные клавиши)

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

 Source Debugging...  --------------------------------------------

      Блок диалога  Source   Debugging   позволяет   задать   язык
 программирования, используемый   Turbo  Debugger  для  вычисления
 выражений, а также включает и отменяет учет регистра.

 Language (язык)
 ---------------

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

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

      C                   Всегда используется язык Си независимо от
                          того, на каком языке написан текущий
                          исходный модуль.

      Pascal              Всегда используется язык Паскаль независимо
                          от того, на каком языке написан текущий
                          исходный модуль.

      Assembler           Всегда используется язык ассемблера
                          независимо от того, на каком языке написан
                          текущий исходный модуль.

 Ignore Symbol Case (игнорирование регистра в символических именах)
 ------------------------------------------------------------------

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


 = 19 =

 Miscellaneous Options...   --------------------------------------

      блок диалога   Miscellaneuos   Options   содержит  параметры
 управления немаскируемыми      прерываниями,       использованием
 идентификаторов процесса, переключением на оболочку DOS, размером
 таблицы символических имен, а также удаленной отладкой.

 NMI Intercept (перехват немаскируемых прерываний)
 -------------------------------------------------

      Если вы   работаете   на  компьютере  Tandy  1000A,  IBM  PC
 Convertable или  NEC  MultiSpeed,  либо   если   Turbo   Debugger
 "подвешивает" вашу  систему  при  загрузке,  запустите  TDINST  и
 выключите блок переключения NMI Intercept.  Некоторые  компьютеры
 используют немаскируемые  прерывания  (NMI)  не  соответственно с
 Turbo Debugger,  поэтому вы должны отменить использование в Turbo
 Debugger этих прерываний, чтобы программа могла пойти.

 Use Expanded Memory (использование расширенной памяти)
 ------------------------------------------------------

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

 Change Process ID (изменение идентификатора процесса)
 -----------------------------------------------------

      Этот блок переключения позволяет определить, должен ли Turbo
 Debugger изменять идентификатор процесса.

      Запрещайте переключение    только   в   том   случае,   если
 собираетесь  производить  трассировку   внутри   DOS   и   хорошо
 осведомлены в технических вопросах, изложенных в приложении В.


 DOS Shell Swap Size (размер памяти в оболочке DOS)
 --------------------------------------------------

      Позволяет задать объем памяти,  который Turbo Debugger будет
 выгружать на диск, когда пользователю потребуется выполнить какую
 -либо команду DOS в процессе отладки; если задать 0,  то при этом
 будет выгружаться вся программа.

 Spare Symbol Memory (свободная символьная память)
 -------------------------------------------------

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


 = 20 =

 Remote Debugging (удаленная отладка)
 ------------------------------------

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

      Обычно эта  возможность  не  включена,  поскольку  это будет
 означать, что Turbo  Debugger  всякий  раз  будет  запускаться  с
 использованием  удаленной системой.

 Remote Link Port (порт связи с удаленной системой)
 --------------------------------------------------

      Позволяет выбрать порт COM1 или COM2 для связи  с  удаленной
 системой.

 Link Speed (скорость обмена данными с удаленной системой)
 ---------------------------------------------------------

      Позволяет выбрать одно из трех  значений  скорости,  которые
 могут  использоваться  для связи с удаленной системой:  9600 бод,
 40000 бод или 115000 бод.
                           Установка режима дисплея                            
 -----------------------------------------------------------------

      ---------------
      default
      Color
      Black and white
      Monochrome
      LCD
      ---------------

      Выбор в  главном  меню  команды  Mode  for Display открывает
 меню, в котором можно выбрать режим дисплея вашей системы.

 Default (умолчание)
 -------------------

      Turbo Debugger  сам  определяет  тип  графического  адаптера
 вашей системы и выбирает соответственно этому режим дисплея.

 Color (цветной)
 ---------------

      Если у вас имеется графический адаптер EGA,  VGA,  CGA, MCGA
 или 8514,  и  данная  опция  выбрана  в  качестве  умолчания,  то
 изображение на дисплее будет цветным.

 Black and White (черно-белый)
 -----------------------------

 = 21 =


      Если у вас имеется графический адаптер EGA,  VGA,  CGA, MCGA
 или  8514,  и  данная  опция  выбрана  в  качестве умолчания,  то
 изображение на дисплее будет черно-белым.

 Monochrome (монохромный)
 ------------------------

      Эту опцию  следует  выбрать  при работе с цветным монитором,
 имеющим плату Hercules,  либо при работе с монохромным  текстовым
 адаптером.

 LCD (жидко-кристаллический)
 --------------------------

      Выбирается для жидко-кристаллического монитора.

              Параметры командной строки и эквиваленты настройки               
 -----------------------------------------------------------------

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


 Параметры командной строки Turbo Debugger       Таблица D.1
 -----------------------------------------------------------------
 Параметр    Маршрут в меню TDINST         Блок диалога и параметр
 -----------------------------------------------------------------
             Display                       Display Options
 -do                                       (*) Other Display
 -dp                                       (*) Flip Pages
 -ds                                       (*) Swap

             Options|Miscellaneous         Miscellaneous Options
 -i                                        [X] Change Process ID
 -i-                                       [ ] Change Process ID

             Options|Input and Prompting   User Input and Prompting
 -k                                        [X] Keystroke Recording
 -k-                                       [ ] Keystroke Recording

             Display                       Display Options
 -l                                        (*) Assembler
 -l-                                       (*) Source

             Options|Input and Prompting   User Input and Prompting
 -p                                        [X] Mouse Enabled
 -p-                                       [ ] Mouse Enabled

 = 22 =


             Options|Miscellaneous         Miscellaneous Options
 -r                                        [X] Remote debugging
 -r-                                       [ ] Remote Debugging

             Options|Miscellaneous         Miscellaneous Options
 -rp1                                      (*) COM1
 -rp2                                      (*) COM2

             Options|Miscellaneous         Miscellaneous Options
 -rs1                                      (*) 9600 бод
 -rs2                                      (*) 40 Кбод
 -rs3                                      (*) 115 Кбод

             Options|Source Debugging      Source Debugging
 -sc                                       [X] Ignore Symbol Case
 -sc-                                      [ ] Ignore Symbol Case

             Options|Directories           Directories
 -sd                                       Source Directories

             Options|Miscellaneous         Miscellaneous Options
 -sm                                       Spare Symbol Memory

             Display                       Display Options
 -vn                                       [ ] Permit 43/50 Lines
 -vn-                                      [X] Permit 43/50 Lines
 -----------------------------------------------------------------

      Примечание:  Чтобы   просмотреть   перечень   всех   параметров
 командной  строки,   доступных  программе  TDINST.EXE,  введите  имя
 программы с параметром -h:

                        Завершение работы с программой                         
 -----------------------------------------------------------------

 Сохранение сделанных изменений      -----------------------------

      ------------------------
      Save Configuration File
      Modify td.exe
      ------------------------

      Когда вы  закончите вносить изменения в конфигурацию отладчика,
 вернитесь в  главное меню и выберите команду Save.

 Команда Save Configuration File
 -------------------------------

      Если выбрать   сохранение  в  файле  конфигурации,  появится
 запрос,  в  котором  будет  указано   имя   файла   конфигурации,

 = 23 =

 используемого  по умолчанию,  TDCONFIG.TD.  Можно подтвердить это
 имя,  нажав  клавишу  Enter,   или   ввести   новое   имя   файла
 конфигурации.  Если  указать  другое  имя  файла,  то  этот  файл
 конфигурации можно загружать  при  запуске  отладчика  с  помощью
 параметра -c командной строки, например,

      td -cmycfg myprog

      Можно также      использовать     команду     Option/Restore
 Configuration для загрузки нужного файла конфигурации после того,
 как запущен Turbo Debugger.

 Команда Modify TD.EXE
 ---------------------

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

      В любой  момент  для  возврата  к конфигурации по умолчанию,
 которую Turbo Debugger имеет при поставке,  скопируйте  TD.EXE  с
 резервного диска  в  рабочую директорию,  заменив им текущий файл
 TD.EXE.

 Выход из TDINST   -----------------------------------------------

      Для выхода  из  TDINST  можно  в  любой  момент  выбрать  из
 главного меню команду Quit.




 = 24 =

                       Приложение E   Удаленная отладка                        
 -----------------------------------------------------------------

      Возможности удаленной   отладки,  обеспечиваемые  отладчиком
 Turbo  Debugger,  отличаются  от  тех,  которые   предоставляются
 другими  отладчиками.  Другие отладчики главным образом позволяют
 управлять самим отладкой с удаленной системы; при этом отладчик и
 отлаживаемая  программа находятся на одной и той же системе. Если
 для отлаживаемой программы требуется больше памяти,  чем остается
 после  загрузки отладчика,  то при такой отладке могут возникнуть
 проблемы. Программа TDREMOTE, поставляемая в составе пакета Turbo
 Debugger,  решает подобные проблемы,  позволяя запускать отладчик
 Turbo Debugger на одной машине,  а отлаживаемую  программу  -  на
 другой машине.

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

      Прежде всего,  необходимо выяснить,  в каких случаях следует
 использовать удаленную отладку. Например, если программа, которую
 необходимо  отладить,  не  загружается  после  загрузки отладчика
 Turbo Debugger,  то ее можно  рассматривать  как  "кандидата"  на
 удаленную отладку.  Если вы получили сообщение "Not enough memory
 to load symbol table" (не хватает  памяти  для  загрузки  таблицы
 обозначений)  или  сообщение  "Not  enough  memory"  при  попытке
 загрузить  программу  для  отладки,   вам   следует   рассмотреть
 возможность удаленной отладки.

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

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


 Подготовка аппаратных средств для удаленной отладки
 -----------------------------------------------------------------

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

      - компьютер для отладки программ,  имеющий  последовательный
 порт;

      - еще  один персональный компьютер с последовательным портом

 = 25 =

 и  достаточным  объемом  памяти  и  дискового  пространства   для
 хранения программы, которую требуется отладить;

      - "нуль-модем"  или  кабель  от принтера для соединения двух
 компьютеров.

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

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

 Установка программных средств удаленной отладки
 -----------------------------------------------------------------

      Скопируйте на удаленную систему  драйвер  удаленной  отладки
 TDREMOTE.EXE. На удаленную систему также необходимо поместить все
 файлы,  которые  требуются  для  отлаживаемой  программы.  К  ним
 относятся   входные  файлы  данных,  файлы  конфигурации,  файлы
 подсказки и т.д.

      Запись файлов  на удаленную  систему можно  осуществить либо  с
 помощью дискет,  либо с  помощью программы  пересылки  файлов  TDRF,
 описанную в документации на дисках.

      Если хотите,  вы можете поместить на удаленную систему копию
 программы,  которую  вы  собираетесь отлаживать.  Это не является
 необходимым, поскольку Turbo Debugger будет сам при необходимости
 пересылать ее по линии связи.

 Установка связи с удаленной системой  ---------------------------

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

      Прежде чем запускать программу TDREMOTE,  определите,  какой
 из последовательных портов удаленной системы будет использоваться
 для   передачи   данных:  COM1  или  COM2.  Если  вы  используете
 последовательный  порт  COM1,  для  запуска  программы   TDREMOTE
 введите следующую команду:

      TDREMOTE - rp1 -rs3

      Если вы  используете  последовательный порт COM2,  запустите

 = 26 =

 программу TDREMOTE следующей командой:

      TDREMOTE - rp2 -rs3

      Обе эти команды активизируют связь с  максимально  возможной
 скоростью  (115  Кбод).  Большинство  персональных  компьютеров и
 кабелей могут обеспечивать эту скорость.  Позже мы расскажем,  как
 устанавливать  меньшую скорость связи,  и вы сможете это сделать,
 если у вас возникнут трудности при передачи данных.

      После запуска  программа  TDREMOTE   выдает   сообщение   об
 авторских  правах,  а затем сообщает,  что она ожидает,  когда вы
 запустите отладчик на другом конце линии связи.  Если  вы  хотите
 остановить  работу  программы  и вернуться в DOS,  просто нажмите
 клавиши CtrlBreak.

 Запуск отладчика Turbo Debugger по линии связи   ----------------

      Для того   чтобы   запустить   Turbo   Debugger   в   режиме
 использования   линии   связи,  добавьте  следующие  параметры  в
 командную строку, которую вы используете для запуска отладчика из
 DOS:

      -  для последовательного порта COM1: -rp1 -rs3;

      -  для последовательного порта COM2: -rp2 -rs3.

      После того,  как связь будет успешно установлена,  на экране
 удаленного компьютера появится сообщение "Turbo  Debugger online"
 (отладчик  Turbo  Debugger  подключен),  и  на  экране  отладчика
 появится  сообщение   "TDREMOTE   online"   (программа   TDREMOTE
 подключена).  Затем  это  сообщение будет быстро заменено обычным
 окном отладчика.

      Обратите внимание,  что  обе  программы  (TD   и   TDREMOTE)
 используют  одинаковые  параметры  для  задания скорости и номера
 последовательного порта.  И для обеспечения правильной работы обе
 они должны задавать одинаковую скорость передачи данных (параметр
 -rs).

      Для отладчика  Turbo  Debugger  имеется  также  параметр  -r
 командой  строки,  который  устанавливает  для  связи с удаленной
 системой скорость и последовательный порт, заданные по умолчанию.
 Если   вы   не   использовали   программу  TDINST  для  изменения
 параметров,  заданных по умолчанию,  параметр -r  будет  задавать
 порт COM1 и скорость 115000 бод (максимально возможную скорость).

      Ниже приведена  типичная  команда  запуска  отладчика  Turbo
 Debugger, которая устанавливает связь с удаленной системой:

      td -rs3 myprog


 = 27 =

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

 О загрузке программы на удаленный компьютер
 -------------------------------------------

      При загрузке  программы  на  диск  удаленной  системы  Turbo
 Debugger  проверяет  дату  и  время  создания  копий программы на
 локальной системе и на удаленной системе. Если копия на локальной
 системе сделана позже,  чем копия на удаленной системе,  отладчик
 считает, что вы перекомпилировали и/или перекомпоновали программу
 и   посылает  ее  по  линии  связи  на  удаленную  систему.  Если
 установлена  максимальная   скорость   передачи,   эта   операция
 производится  со скоростью примерно 11К в секунду.  Это означает,
 что пересылка программы  размером  60К  займет  около  6  секунд,
 поэтому  не  беспокойтесь,  если  при  загрузке  новой  программы
 возникнет небольшая задержка.

      Для того чтобы показать, что идет передача данных, на экране
 удаленной  системы  ведется  подсчет  байтов  файла  по  мере  их
 передачи.

 Параметры командной строки программы TDREMOTE   -----------------

      Ниже приведен полный перечень параметров  командной  строки,
 поддерживаемых   программой  TDREMOTE.  Перед  параметром  должен
 стоять либо знак переноса (-), либо слеш (/).

      -?             Отображает текст подсказки
      -h             Отображает текст подсказки
      -rp1           Порт 1, COM1
      -rp2           Порт 2, COM2
      -rs1           Низкая скорость, 9600 бод
      -rs2           Средняя скорость, 40000 бод
      -rs3           Высокая скорость, 115000 бод
      -w             Записать значения параметров в исполняемый
                     программный файл

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

      Вы можете  сделать  параметры  командной  строки   программы
 TDREMOTE  постоянными,  записав  их  обратно  в  исполняемый файл
 программы TDREMOTE,  хранящийся на диске.  Чтобы это сделать надо
 задать   параметр   -w  вместе  с  другими  параметрами,  которые
 требуется  сделать  постоянными.  Затем  программа  запросит  имя
 исполняемого  файла.  В  ответ  на  запрос можно ввести новое имя

 = 28 =

 исполняемого файла,  которого еще не существует.  В  этом  случае
 TDREMOTE создаст новый исполняемый файл.

      Примечание: Для   того   чтобы   посмотреть   перечень  всех
 параметров   командной   строки,    доступных    для    программы
 TDREMOTE.EXE, введите имя программы с параметром -h:


      TDREMOTE -h

      Если вы работаете в операционной системе DOS версии  3.0 или
 более  поздней,  запрос  будет  включать маршрут и имя файла,  из
 которого вы запускали программу TDREMOTE.  Вы можете  подтвердить
 это имя,  нажав клавишу Enter, либо ввести новое имя исполняемого
 файла.  Файл с новым именем должен уже  существовать  и  являться
 копией программы TDREMOTE, которую вы сделали ранее.

      Если вы работаете в DOS версии 2.х, вы должны будете указать
 полный маршрут и имя файла исполняемой программы.

 Сеанс удаленной отладки
 -----------------------------------------------------------------

      После того как вы запустили программы TDREMOTE и TD в режиме
 удаленной отладки,  вы можете отлаживать свою программу почти так
 же,  как вы бы это делали,  работая на одном компьютере.  Команды
 отладчика работают точно так же, как при обычной отладке, и здесь
 нечего изучать.

      Помните, что     поскольку    отлаживаемая    программа    в
 действительности работает на удаленной системе,  любой  вывод  на
 экран  и ввод с клавиатуры данных для программы осуществляется на
 удаленной  системе.  При  работе  на  удаленной  системе  команда
 View/User Screen не действует.

      Тип процессора  удаленной  системы  указывается  в заголовке
 окна процессора после слова "REMOTE" (удаленный).

      Если во время работы с отладчиком Turbo Debugger  вы  хотите
 переслать  файлы  на  удаленную систему,  вы можете выйти в DOS с
 помощью команды File/DOS Shell, а затем использовать утилиту TDRF
 для управления передачей файлов на удаленную систему. Затем можно
 вернуться в отладчик,  введя в командной строке DOS команду exit,
 и продолжать отлаживать программу.  Работа программы TDRF описана
 в документации, поставляемой на диске.

 Сообщения программы TDREMOTE   ----------------------------------

      Ниже приведен перечень сообщений, которые вы можете получить
 при работе с программой TDREMOTE.

      nn bytes downloaded

 = 29 =

      (Загружено nn байтов)
      Файл передается   на   удаленную   систему.   Это  сообщение
 показывает,  как идет процесс пересылки файла.  При  максимальной
 скорости  передачи  (115000  бод)  пересылка  идет  со  скоростью
 примерно 10К в секунду.

      Can't create file
      (Файл не может быть создан)
      Программа TDREMOTE не может создать файл,  который требуется
 переслать.  Это  может  произойти,  либо  если  диск  заполнен до
 предела,  либо если имя файла  совпадает  с  именем  существующей
 директории.

      Can't modify exe file
      (Файл типа exe не может быть модифицирован)
      Заданный файл,   который   должен   быть  модифицирован,  не
 является  достоверной  копией  программы  TDREMOTE.   С   помощью
 параметра   -w   можно   модифицировать  только  копии  программы
 TDREMOTE.

      Can't open exe file to modify
      (Файл типа EXE не может быть открыт для модификации)
      Файл с  указанным  именем   не   может   быть   открыт   для
 модификации.    Возможно   было   введено   имя   неверного   или
 несуществующего файла.

      Downloaded complete
      (Загрузка завершена)
      Файл успешно  передан  на   удаленную   систему   программой
 TDREMOTE.

      Downloaded failed, write error on disk
      (Загрузка сорвана, ошибка записи на диск)
      Программа TDREMOTE  не  может записать часть принятого файла
 на диск.  Это обычно происходит,  когда диск заполнен до предела.
 Для того чтобы можно было успешно загрузить файл, следует удалить
 с диска несколько файлов.

      Enter program file name to modify
      (Введите имя программного файла для модификации)
      Если вы работаете в DOS версии  3.0  или  более  поздней,  в
 запросе  будет  указан  маршрут  и  имя  файла,  из которого была
 загружена программа TDREMOTE.  Вы  можете  подтвердить  это  имя,
 нажав  клавишу  Enter,  или  ввести новое имя исполняемого файла.
 Файл с новым именем должен уже  существовать  и  содержать  копию
 программы TDREMOTE, которая была сделана предварительно.

      Interrupted
      (Операция прервана)
      Во время  ожидания  установления  связи с удаленной системой
 были нажаты клавиши Ctrl-Break.


 = 30 =

      Invalid command line option
      (Недопустимый параметр командной строки)
      При запуске программы TDRF из командной строки DOS был задан
 недопустимый параметр командной строки.

      Link broken
      (Связь прервана)
      Работа программы,    взаимодействующей   с   TDREMOTE   была
 остановлена, и произошел возврат в DOS.

      Link established
      (Связь установлена)
      Программа на другой системе запущена для связи с TDREMOTE.

      Loading program "name" from disk
      (Загрузка программы "имя" с диска)
      Turbo Debugger  дал  команду  программе  TDREMOTE  загрузить
 программу с диска в память для подготовки ее к отладке.

      Program load failed, EXEC failure
      (Загрузка программы прервана, ошибка выполнения)
      DOS не   может  загрузить  программу  в  память.  Это  может
 произойти в том случае, если программа запорчена или обрезана. Вы
 должны  удалить  программный  файл  с  диска.  Это заставит Turbo
 Debugger  переслать  новую  копию  по  линии  связи.  Если  после
 удаления  файла  это  сообщение появится вновь,  вы должны заново
 скомпоновать его на другой системе и попытаться еще раз.

      Program load failed; not enough memory
      (Загрузка программы прервана, не хватает памяти)
      На удаленной системе нет достаточного  количества  свободной
 памяти  для загрузки программы,  которую требуется отладить.  Это
 может произойти только с очень  большими  программами,  поскольку
 утилита TDREMOTE занимает всего 15К памяти.

      Program load failed; program not found
      (Загрузка программы прервана, программа не найдена)
      TDREMOTE не может найти программу на диске. Этого никогда не
 должно происходить,  поскольку Turbo Debugger загружает программу
 на удаленную систему, если не может ее там найти.

      Program load successful
      (Программа успешно загружена)
      TDREMOTE завершила  загрузку  программы,  которую  требуется
 отладить.

      Reading file "name" from Turbo Debugger
      (Чтение файла "имя" из отладчика Turbo Debugger)
      Файл пересылается отладчику Turbo Debugger.

      Unknown request: message
      (Неизвестный запрос: сообщение)

 = 31 =

      Программа TDREMOTE  получила  недопустимый  запрос  с  другой
 системы.  При  правильной  работе  связи это сообщение никогда не
 должно возникать.  Если вы  получили  это  сообщение,  проверьте,
 правильно  ли  подключен  кабель связи.  Если и после этого будет
 возникать та же ошибка,  попробуйте уменьшить скорость передачи с
 помощью параметра командной строки -rs.

      Waiting for handshake (press Ctrl-Break to quit)
      (Ожидание квитирования (для выхода нажмите Ctrl-Break))
      Программа TDREMOTE   запущена   и   ожидает   сообщений   от
 программы,  находящейся  на  другой  системе.  Если   вы   хотите
 вернуться в DOS до того, как другая система инициализирует связь,
 нажмите клавиши Ctrl-Break.

 Обеспечение совместной работы всех аппаратных средств
 -----------------------------------------------------------------

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

      Если возникают   какие-либо   затруднения,   прежде   всего,
 проверьте,  правильно  ли  подключен  кабель.  Затем   попробуйте
 установить  связь с наименьшей скоростью,  используя параметр -rs
 при запуске программ TDREMOTE и TD. Если все работает нормально с
 параметром  -rs1,  попробуйте использовать параметр -rs2 (средняя
 скорость).  Некоторые комбинации различных компьютеров и  кабелей
 не  всегда  нормально работают с максимальной скоростью,  поэтому
 если вы смогли  обеспечить  нормальную  работу  только  на  более
 низкой скорости, можно попробовать использовать другой кабель или
 другие компьютеры.



 = 32 =

                                                                               
Приложение F   Блоки диалога и сообщения об ошибках
 -----------------------------------------------------------------


      Отладчик Turbo Debugger отображает свои сообщения об ошибках
 и сообщения блоков диалога в текущей позиции курсора.

      В этом   приложении   описаны   сообщения   блоков  диалога,
 сообщения об ошибках и информационные  сообщения,  которые  может
 выдавать отладчик Turbo Debugger.

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

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

      Вы можете ответить на запрос одним из двух способов:

      -  ввести ответ и подтвердить его, нажав клавишу Enter;

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

      Некоторые блоки  диалога  предоставляют  возможность  выбора
 только одного из двух элементов (например,  yes/no - да/нет). Для
 выбора нужного элемента можно  использовать  клавиши  перемещения
 курсора и нажать Enter, либо непосредственно нажать клавишу Y или
 N. Для отмены команды надо нажать клавишу Esc.

      Более подробная   информация   об   использовании    команд,
 вызываемых   нажатием   клавиш,  в  ответ  на  запросы  отладчика
 приведена в главе 2.

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

      Already recording, do you want to abort?
      (Запись уже идет; хотите ли вы прервать ее?)
      Вы уже  записываете  клавишный  макрос.  Вы не можете начать
 записывать новый макрос, пока не будет завершена запись текущего.
 Нажмите   Y,  чтобы  остановить  запись  макроса,  или  N,  чтобы

 = 33 =

 продолжить ее.

      Device error - Retry?
      (Ошибка устройства; сделать повторную попытку?)
      Во время  вывода  информации   на   символьное   устройство,
 например,  принтер,  произошла  ошибка.  Это  могло  произойти  в
 результате отсоединения кабеля принтера,  перехода  его  в  режим
 "offline",  или  отсутствия бумаги.  Устраните причину ошибки,  а
 затем нажмите Y, чтобы попытаться выполнить операцию заново, либо
 N, чтобы ее отменить.

      Disk error on drive __ - Retry?
      (Ошибка при обращении к диску __; сделать повторную попытку?)
      При обращении к указанному диску произошла ошибка. Это может
 означать,  что в дисководе отсутствует  дискета,  или,  в  случае
 жесткого   диска,   это   может   указывать   на  нечитаемую  или
 незаписываемую область диска.  Вы можете нажать Y и посмотреть, к
 чему приведет повторная попытка, либо N, чтобы отменить операцию.

      Edit watch expression
      (Отредактируйте отслеживаемое выражение)
      Скорректируйте или  замените отслеживаемое выражение. Запрос
 относится  к  отслеживаемому  выражению,  выделенному  в   данный
 момент.

      Enter address, count, byte value
      (Введите адрес, количество и значение байта)
      Введите адрес  блока  памяти,  в  который вы хотите записать
 конкретное значение байта,  количество  байтов  в  этом  блоке  и
 значение, которым должен быть заполнен этот блок.

      Enter address to position to
      (Введите адрес для позиционирования)
      Введите адрес  программы  для  просмотра.  Можно  ввести имя
 функции, номер  строки,  абсолютный   адрес   или   выражения   с
 указателями памяти. Ввод адресов более подробно описан в главе 9.

      Enter animate delay (10ths of sec)
      (Введите задержку для "оживления" (в 10-ых долях секунды))
      Укажите, с   какой   задержкой  должна  выполняться  команда
 Animate.  Чем больше введенное число,  тем больше задержка  между
 последовательными шагами процесса "оживления".

      Enter code address to execute to
      (Введите адрес, до которого следует выполнить программу)

      Введите адрес в программе, до которого следует выполнить эту
 программу. Ввод адресов более подробно описан в главе 9.

      Enter command-line arguments
      (Введите аргументы командной строки)
      Введите параметры командной строки для отлаживаемой программы.

 = 34 =


      Enter comment to add to end of log
      (Введите комментарий, который надо добавить в конец журнала)
      Введите произвольную   строку   текста,  которую  необходимо
 добавить к сообщениям,  отображаемым в окне просмотра журнала. Вы
 можете  ввести  любой  текст,  который считаете нужным;  он будет
 помещен в журнал точно в таком виде, в котором вы его ввели.

      Enter expression for conditional breakpoint
      (Введите выражение для условной точки останова)
      Введите выражение,  которое  должно  быть   истинно   (иметь
 ненулевое значение) для того, чтобы была включена точка останова.
 Это выражение будет вычисляться при каждом проходе точки останова
 по  ходу  выполнения  программы.  Будьте  осторожны  в  отношении
 возможных побочных эффектов.

      Enter expression to evaluate
      (Введите выражение, которое надо вычислить)
      Введите выражение,  значение которого вы  хотели  бы  знать.
 Значение  и  тип  результата будут отображены в специальном окне,
 которое исчезает при следующем нажатии клавиши.

      Enter expression to watch
      (Введите выражение, которое надо отследить)
      Введите имя переменной или выражение,
 которое вы  хотите отслеживать в окне Watches.  При желании можно
 ввести выражение, не относящееся к адресу памяти, например x*y+4.
 Если данный  блок  диалога инициализирован из текстового подокна,
 то подтвердить ввод можно нажатием  Enter,  либо  можно  изменив
 ввод и заменить его полностью на любое другое выражение.


      Enter inspect start index, range
      (Введите начальный индекс и диапазон для проверки данных)
      Введите индекс  первого  элемента  и  количество   элементов
 массива,  которые  вы хотели бы просмотреть.  Между двумя числами
 поставьте пробел или запятую.

      Enter instruction to assemble
      (Введите команду, которую требуется ассемблировать)
      Введите команду языка ассемблера,  которая  должна  заменить
 команду с текущим адресом в подокне кода. В приложении C приведен
 сжатый список всех зарезервированных слов языка ассемблера,  а  в
 главе 11 язык ассемблера рассмотрен более подробно.

      Enter log file name
      (Введите имя журнального файла)
      Введите имя файла,  в который вы хотите записать журнал.  До
 тех пор,  пока вы не выполните команду Close  log  file  (закрыть
 журнальный   файл),  все  строки,  передаваемые в  журнал,  будут
 записываться  в  этот  файл,  а   также   отображаться   в   окне
 регистрации. По умолчанию журнальный файл имеет расширение .LOG и

 = 35 =

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

      Enter memory address
      (Введите адрес области памяти)
      Введите один адрес области памяти.  В качестве адреса  можно
 использовать либо идентификатор, либо полное выражение.

      Enter memory address,count
      (Введите адрес области памяти,число)
      Введите адрес  области памяти и через запятую необязательное
 число  элементов.  В  качестве  адреса  можно  использовать  либо
 идентификатор, либо полное выражение.


      Enter name of configuration file
      (Введите имя файла конфигурации)
      Введите им я файла конфигурации для чтения или  записи. Если
 вы  собираетесь  считывать информацию из файла,  вы можете ввести
 метасимвольную маску и получить список соответствующих ей файлов.

      Enter name of file to view
      (Введите имя файла для просмотра)
      Вы можете использовать метасимволы  DOS  и  получить  список
 файлов,  либо  ввести имя конкретного файла,  который должен быть
 загружен.

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

      Enter new coprocessor register value
      (Введите новое значение регистра сопроцессора)
      Введите новое  значение  для  выделенного  в  данный  момент
 регистра числового процессора. Вы можете ввести полное выражение,
 которое будет  формировать  новое  значение.  Перед  загрузкой  в
 регистр  это  выражение будет преобразовано в правильный формат с
 плавающей точкой.

      Enter new data bytes
      (Введите новые байты данных)
      Введите последовательность байтов,  которые должны заменить
 байты  сегмента,  находящиеся в позиции,  отмеченной курсором.  В
 главе 9  приведена  подробная  информация  о  последовательностях
 байтов.

      Enter new directory
      (Введите новую директорию)
      Введите новое  имя  дисковода  и/или директории,  которые вы

 = 36 =

 хотели бы сделать текущими.

      Enter new file offset
      (Введите новое смещение файла)
      Вы просматриваете   дисковый   файл   в    шестнадцатиричном
 представлении. Введите   смещение   относительно   начала   файла
 области, которую   вы    желаете    просмотреть.    Файл    будет
 позиционирован в строку, соответствующую заданному вами смещению.
      Введите метасимвольную спецификацию, принятую в DOS, которая
 соответствует  файлам,  список  которых вы хотите просмотреть.  В
 спецификацию может входить новое имя диска или директории.

      Enter new line number
      (Введите новый номер строки)
      Введите номер строки текущего  модуля,  которую  вы  желаете
 видеть. Если  введенный  вами  номер  строки  находится за концом
 файла, то выведена будет последняя строка файла.  Нумерация строк
 начинается с 1 для первой строки файла.  Текущий номер строки,  в
 которой находится курсор, обозначен в первой строке окна Module.

      Enter new relocation segment value
      Введите новый номер сегмента
      Введите выражение  на  текущем  языке.  Это  значение  будет
 использовано для  установки  адреса  базового  сегмента   таблицы
 символических имен,   загружаемой   командой   File|Symbol  Load.
 Введенное вами  выражение  должно  при  вычислении  давать  номер
 сегмента начала кода,  к которому относится таблица символических
 имен.

      Enter new value
      (Введите новое значение)
      Введите новое  значение для регистра процессора, выделенного
 в данный момент.  Вы может ввести полное выражение, которое будет
 формировать новое значение.

      Enter port number
      (Введите номер порта)
      Введите номер  порта  ввода/вывода,  из  которого  вы хотите
 ввести значение.  Допустимые номера портов находятся в  диапазоне
 от 0 до 65535.

      Enter port number, value to output
      (Введите номер порта, значение для вывода)
      Введите номер   порта  ввода/вывода,  в  который  вы  хотите
 вывести значение,  а также само это значение.  Два этих выражения
 должны быть разделены запятой. Допустимые номера портов находятся
 в диапазоне от 0 до 65535.


      Enter program name to load
      (Введите имя программы, которую надо загрузить)
      Введите имя программы, которую вы собираетесь отлаживать. Вы

 = 37 =

 можете получить на экране список  файлов,  используя  метасимволы
 DOS,  либо  ввести  конкретное  имя  файла,  который  должен быть
 загружен.  Если не указано расширение  файла,  будет  добавляться
 расширение .EXE.

      Enter read file name
      (Введите имя файла, который надо считать)
      Введите имя файла или метасимвольную спецификацию для файла,
 который  вы  хотите   считать   в   память.   Если   вы   введете
 метасимвольную  спецификацию  или  подтвердите  спецификацию *.*,
 используемую по  умолчанию,  на  экране  будет  отображен  список
 соответствующих ей файлов, из которого вы сможете выбрать нужный.

      Enter search bytes
      (Введите искомые байты)
      Введите последовательность  байтов,  которые будут искаться,
 начиная с позиции в памяти,  отмеченной курсором. Более подробная
 информация о последовательностях байтов приведена в главе 9.

      Enter search instruction or bytes
      (Введите искомую команду или байты)
      Введите команду  в  таком же виде,  как для команды Assemble
 локального меню,  или последовательность байтов,  как для команды
 Search в подокне данных.

      Set search string
      (Введите искомую строку)
      Введите искомую   строку   символов.  Для  этого  вы  можете
 использовать метасимволы,  если требуется неточно задать  искомую
 строку; например, * заменяет нулевое и более количество символов,
 а ? заменяет один символ.

      Enter source address, destination, count
      (Введите адрес источника, назначение, количество)
      Введите адрес  блока,   который   вы   хотите   переместить,
 количество байтов и адрес результирующего блока,  в который будут
 перемещены байты. Три выражения должны быть разделены запятыми.

      Enter source directory list
      (Введите список директорий, содержащих исходные файлы)
      Введите список директорий, разделенных пробелами или точками
 с  запятой.  Поиск  исходных  файлов  в  этих  директориях  будет
 производиться в том порядке,  в котором  они  записаны  в  данном
 списке.

      Enter symbol table name
      (Введите имя таблицы символических имен)
      Введите имя таблицы символических имен,  которая должна быть
 загружена с  диска.  Обычно  эти  файлы  имеют  расширение  .TDS.
 Расширение должно быть задано явно.

      Enter tab column spacing

 = 38 =

      (Введите количество столбцов между символами табуляции)
      Введите число  от  1 до 32,  которое задает расстояние между
 символами табуляции при отображении файлов в  окне  файла  или  в
 окне модуля.

      Enter variable to inspect
      (Введите имя переменной для проверки)
      Введите имя  переменной  или выражение,  значения которых вы
 хотите проверить.  Если запрос появился из текстового подокна, вы
 можете подтвердить элемент, нажав клавишу Enter, изменить его или
 ввести что-либо другое.

      Enter write file name
      (Введите имя файла для записи)
      Введите имя файла,  в который вы хотите записать  содержимое
 блока памяти.

      Overwrite__?
      (Затереть__?)
      Вы задали для записи имя уже существующего файла.  Вы можете
 выбрать между  тем,  чтобы  затереть  этот  файл,   заменив   его
 предыдущее содержимое  новым,  и  те,  чтобы  отменить  команду и
 оставить содержимое существующего файла без изменений.

      Overwrite existing macro on selected key?
      (Затереть существующий макрос для выбранной клавиши?)
      Вы нажали клавишу для записи макроса,  а  этой  клавише  уже
 назначен  другой  макрос.  Если  вы  хотите затереть существующий
 макрос новым,  нажмите клавишу Y;  в противном случае нажмите  N,
 чтобы отменить команду.

      Pick a method name
      (Выберите имя правила)
      Вы задали имя подпрограммы, которое может относиться к более
 чем одному правилу объекта.  Вы должны выбрать требуемое  имя  из
 представленного вам списка.

      Pick a module
      (Выберите модуль)
      Выберите модуль,  который  вы  будете  просматривать  в окне
 модуля.  Вам  будет  предоставлен  список  всех   модулей   вашей
 программы.  Если вы хотите просмотреть файл,  который не является
 программным модулем, используйте команду меню View/File.

      Pick a source file
      (Выберите исходный файл)
      Выберите исходный файл из отображенного  на  экране  списка.
 Отображаются  только  те  исходные файлы,  из которых сформирован
 текущий модуль.

      Pick a symbol
      (Выберите символическое имя)

 = 39 =

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

      Pick a window
      (Выберите окно)
      Выберите окно из списка заголовков активных окон.

      Press key to assign macro to
      (Нажмите клавишу, которой должен быть назначен макрос)
      Нажмите клавишу,  которую  вы   хотите   назначить   данному
 макросу.    Затем    нажмите    нажмите    клавиши,    вызывающие
 последовательность команд,  которые вы  хотите  назначить  данной
 клавише  макроса.  Команды  будут  реально выполняться по мере их
 ввода.  Чтобы завершить запись макроса,  нажмите клавишу, которая
 была ему назначена; макрос будет записан на диск вместе с другими
 клавишными макросами.

      Press key to delete macro from
      (Нажмите клавишу для макроса, который надо удалить)
      Нажмите клавишу,  назначенную  макросу,  который  вы  хотите
 удалить.   После  этого  клавише  будет  возвращена  ее  исходная
 функция.

      Program already terminated; reload?
      (Программа уже остановлена; перезагрузить?)
      Вы попытались запустить программу  или  начать  ее  пошаговую
 отладку  после  того,  как  она  была  уже  остановлена.  Если вы
 ответите на этот вопрос положительно (нажав клавишу Y), программа
 будет   перезагружена.  Если  вы  ответите  нажатием  клавиши  N,
 программа не будет перезагружена,  и  ваша  команда  запуска  или
 пошаговой отладки не будет выполнена.

      Program out of date on remote; send over link?
      (Программа на удаленной системе устарела; передать по линии
       связи?)
      Вы запускаете отладчик Turbo  Debugger  по  линии  связи,  а
 программа либо отсутствует на удаленной системе, либо старше, чем
 версия,  находящаяся  на  основной  системе.  Если  вы   ответите
 положительно (нажав клавишу Y), новая программа будет передана на
 удаленную систему по  линии  связи.  Если  вы  ответите  нажатием
 клавиши  ,  команда  загрузки  будет  отменена.  Если установлена
 наименьшая скорость передачи,  вы можете скопировать программу на
 удаленную  систему вручную,  используя дискету.  При максимальной
 скорости передачи,  пересылка производится,  как минимум,  так же
 быстро, как и при использовании дискеты.

      Reload program so arguments take effect?
      (Перезагрузить программу, чтобы учитывались аргументы?)
      Вы изменили  аргументы  командной  строки  для  отлаживаемой
 программы.  Если вы ответите на этот  вопрос  положительно,  ваша
 программа  будет перезагружена и возвращена в исходное состояние.

 = 40 =

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

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

      Сообщения об    ошибках   обычно   сопровождаются   звуковым
 сигналом. Звуковой сигнал можно отключить как из командной строки
 DOS  при  запуске  отладчика  Turbo  Debugger,  так  и  с помощью
 программы настройки TDINST.
                               Фатальные ошибки                                

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

      Bad configuration file
      (Неверный файл конфигурации)
      Файл конфигурации либо был запорчен, либо не является файлом
 конфигурации  отладчика Turbo Debugger,  либо является устаревшим
 файлом конфигурации, предназначенным для другой версии отладчика.

      Could not create dummy PSP segment
      (Не может быть создан фиктивный программный сегмент)
      При запуске  виртуального  отладчика  TD386   без   указания
 программы,  которая должна быть загружена, фиктивная программа не
 может быть создана.  Попробуйте запустить отладчик  TD386,  задав
 имя программы, которую надо отладить.

      Fatal EMS error
      (Фатальная ошибка управления расширенной памятью)

      Драйвер расширенной   памяти    типа    EMS    вернул    код
 невосстанавливаемой   ошибки.   Либо   сама   расширенная  память
 функционирует неправильно, либо программный драйвер был запорчен.
 Перезагрузите  систему  и  попытайтесь  еще  раз.  Если  проблема

 = 41 =

 повторится,  то возможно она  связана  с  аппаратными  средствами
 расширенной памяти.

      Invalid switch:__
      (Неверный параметр:__)
      Вы задали  недопустимый  параметр в командной строке DOS.  В
 приложении А приведен список всех параметров командной  строки  в
 сокращенной  форме,  а  в главе 4 все параметры рассмотрены более
 подробно.

      Not enough memory
      (Недостаточно памяти)
      Для обработки вашей команды  отладчику  не  хватает  рабочей
 области памяти.

      Remote link timeout
      (Тайм-аут в линии связи)
      Повреждена линия  связи  с  удаленной  системой.  Попробуйте
 перезагрузить обе системы и еще  раз  запустить  программу.  Если
 сбой  повторится,  обратитесь  к  приложению  E,  где рассмотрена
 отладка на удаленной системе.

      Unsupported vide  сdapter
      (Неподдерживаемый видеоадаптер)
      Turbo Debugger не может определить, какой дисплейный адаптер
 вы используете; поддерживаются адаптеры MDA, CGA, EGA, VGA, MCGA,
 Hercules,  композитный  адаптер  фирмы  Compaq,  AT&T  и   близко
 совместимые с ними.

      Wrong version of TDREMOTE
      (Неверная версия программы TDREMOTE)
      На удаленной системе работает несовместимая версия программы
 TDREMOTE. Необходимо использовать одну и ту же версию программ TD
 и TDREMOTE.
                             Сообщения об ошибках                              

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

      3 * (7 + 4

      должно было быть записано:

      3 * (7 + 4)

      ':' expected

 = 42 =

      (Требуется двоеточие)
      При вычислении  выражения  языка  Си встретился знак вопроса
 (?),  разделяющий первые  два  выражения  троичной  операции  ?:;
 однако   двоеточия,   разделяющего  второе  и  третье  выражение,
 обнаружено не было. Например, вместо

      x < 0 ? 4 6

      должно было быть записано:

      x < 0 ? 4 : 6

      ']' expected
      (Требуется закрывающая квадратная скобка)
      При вычислении  выражения встретилась открывающая квадратная
 скобка,  с которой начинается индекс массива, без соответствующей
 ей  закрывающей  скобки  после  индексного  выражения.  Например,
 вместо

      table[4

      должно было быть записано:

      table[4]

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

      mov ax,4[s

      должно было быть записано

      mov ax,4[s]

      Already logging to a file
      (Уже регистрируется в файле)
      Вы ввели команду Open log  file  (открыть  журнальный  файл)
 после  того,  как  уже задали ту же самую команду,  не прервав ее
 выполнения командой Close log file (закрыть журнальный файл).

      Ambiguous symbol name
      (Неоднозначность в символическом имени)
      Вы ввели  символическое  имя   в   выражении,   неоднозначно
 идентифицирующее правило       в       программе      Си      или
 объектно-ориентированного Паскаля и не желаете выбирать корректное
 имя из  списка.  Для  вычисления  выражения  вы  обязаны  выбрать
 корректное имя из представленного вам списка.


 = 43 =

      Assignment out of range
      (Присваивание за пределами диапазона)
      При выполнении операции присваивания  в  языке  Паскаль,  вы
 попытались  присвоить  переменной значение,  которое находится за
 пределами допустимых значений этой переменной.

      Bad configuration file name
      (Неверное имя файла конфигурации)
      Вы задали   в   параметре   командной    строки    -c    имя
 несуществующего файла.

      Cannot be changed
      (Значение данной переменной не может быть изменено)
      Вы попытались изменить значение переменной, которое не может
 быть  изменено.  Непосредственно  могут  быть  изменены  значения
 только тех переменных,  которые относятся к скалярному типу (int,
 long и т.д.  в Си; byte, integer, longint и т.д. в Паскале) или к
 ссылочному типу. Если вы хотите изменить структуру или массив, вы
 должны по одному изменять его отдельные элементы.

      Can't execute DOS command processor
      (Не может быть выполнен командный процессор DOS)
      Либо для выполнения командного  процессора  DOS  не  хватает
 памяти,  либо командный процессор не может быть найден. Убедитесь
 в  том,  что  переменная  среды   COMSPEC   правильно   указывает
 местоположение командного процессора DOS.

      Can't go resident until user program terminates
      (Резидентная загрузка до завершения  программы  пользователя
 невозможна)
      Вы попытались сделать Turbo Debugger  резидентным  до  того,
 как стала  резидентной  отлаживаемая  программа.  Turbo  Debugger
 может стать  резидентной  только  при  отсутствии  загруженной  в
 память программы,  либо  после  того,  как  загруженная программа
 выполнена и завершена.

      Can't have more than one segment override
      (Не может быть более одного замещения сегмента)
      Вы попытались  сассемблировать  команду,   в   которой   оба
 операнда используют замещение сегмента. Только один операнд может
 использовать замещение сегмента. Например, вместо

      mov es:[bx],ds:ax

      должно было быть записано:

      mov es:[bx],ax

      Can't set a breakpoint at this сddress
      (Точка останова не может быть установлена в данном месте)
      Вы попытались   установить   точку   останова   в   ПЗУ,   в
 несуществующей памяти или в нулевом сегменте. Единственный способ

 = 44 =

 слежения за выполнением программы,  хранящейся в ПЗУ, заключается
 в использовании команды Run/Trace для ее пошагового выполнения.

      Can't set any more hardware breakpoints
      (Больше не может быть установлено никаких аппаратных точек
       останова)
      Вы не можете установить еще одну аппаратную  точку останова,
 предварительно  не удалив одну из установленных ранее.  Различные
 аппаратные отладчики поддерживают разное количество и разные типы
 аппаратных точек останова.

      Can't set hardware condition on this breakpoint
      (Аппаратные условия для этой точки останова невозможны)
      Вы попытались  установить  аппаратное  условие  срабатывания
 точки останова,  не  являющейся  глобальной.  Аппаратные  условия
 могут быть назначены только глобальным точкам останова.

      Can't set that sort of hardware breakpoint
      (Аппаратная точка останова этого типа не может быть
       установлена)
      Драйвер аппаратного отладчика, установленный в файле CONFIG.
 SYS, не поддерживает аппаратную точку останова с комбинацией типа
 цикла,  соответствия адреса и  соответствия  данных,  которую  вы
 задали.

      Can't swap user program to disk
      (Программа пользователя не может быть переписана на диск)
      Вы ввели   команду,   в   результате   которой  отлаживаемая
 программа должна быть записана на диск,  однако на текущем  диске
 недостаточно   свободного   места  для  записи  программы.  Перед
 выполнением каких-либо  команд,  требующих  записи  программы  на
 диск,  вам  потребуется освободить некоторое пространство на диске.
 Для  выполнения  команды  меню  File/DOS Shell  и  команды   Edit
 текстового подокна требуется запись программы на диск.

      Can't use same register twice
      (Один и тот же регистр не может быть использован дважды)
      Вы попытались   сасемблировать   команду,   которая   дважды
 обращается к базовому или индексному регистру в одном  и  том  же
 хранимом  в памяти операнде.  В любом операнде можно использовать
 регистр только один раз.
      Например, вместо

      mov ax,[bx+bx]

      должно было быть записано:

      mov ax,[bx+si]

      Cannot acces an inactive scope
      (Нельзя осуществить доступ в неактивной области действия)
      Вы ввели  выражение или указали на переменную в окне модуля,

 = 45 =

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

      Constructors and destructors cannot be called
      (Вызов конструкторов и деструкторов невозможен)
      Это сообщение  появляется  только  при   отладке   программ,
 использующих объекты. Вероятно, вы попытались выполнить объектное
 правило, являющееся конструктором или деструктором  объекта.  Это
 недопустимо.

      Destination too far away
      (Адрес назначения находится слишком далеко)
      Вы попытались  сассемблировать  команду  условного перехода,
 где адрес назначения находится слишком далеко от текущего адреса.
 Адрес назначения для команды условного перехода должен находиться
 в пределах -128 и +127 байтов от самой команды.

      Divide by zero
      (Деление на ноль)
      Вы ввели выражение,  использующее операцию деления (/,  div)
 или операцию получения модуля (mod,  %),  в правой части которого
 записано выражение равное нулю.  Поскольку в этом случае операции
 деления  и  получения  модуля  не  имеют  определенных значений,
 выдается сообщение об ошибке.

      Edit program not specified
      (Программа редактора не задана)
      Вы пытались использовать команду Edit локального  меню  окна
 модуля или окна дискового файла,  но вы не задали команду запуска
 редактора в программе настройки.

      Error loading program
      (Ошибка при загрузке программы)
      Операционная система DOS не в состоянии загрузить программу,
 которую  вы  указали.  Это  может  означать,  что  данный файл не
 является достоверным файлом типа EXE,  либо  файл  типа  EXE  был
 запорчен.

      Error opening file ___
      (Ошибка при открытии файла ___)
      Turbo Debugger не может открыть файл, содержимое которого вы
 хотите просмотреть в окне файла.

      Error opening log file ___
      (Ошибка при открытии журнального файла ___)
      Файл, который  был  указан  для  команды   Open   Log   File
 локального меню, не может быть открыт. Либо для создания файла не
 хватает места,  либо неверно указаны диск, маршрут директории или
 имя  файла.  Либо  освободите  некоторое  пространство  на диске,
 удалив часть файлов,  либо правильно задайте диск,  маршрут и имя
 файла.

 = 46 =


      Error reading block into memory
      (Ошибка при считывании блока в память)
      Блок, который  был  задан,  не  может быть считан из файла в
 память. Возможно, вы указали количество байтов, которое превышает
 реальное количество байтов в файле.

      Error recording keystroke macros
      (Ошибка при записи клавишного макроса)
      Ошибка произошла  во  время записи клавишного макроса в файл
 конфигурации. Скорее всего макрос не был записан на диск.

      Error saving configuration
      (Ошибка при сохранении конфигурации)
      Turbo Debugger не  смог  сохранить  конфигурацию  на  диске.
 Убедитесь  в  том,  что  на  диске  имеется  некоторое  свободное
 пространство.

      Error swapping in user program, press key to reload
      (Ошибка при "подкачке" программы с диска, нажмите клавишу,
       чтобы перезагрузить программу)

      После "сброса" вашей программы на диск для выполнения другой
 программы,   которую   вы   указали,   Turbo  Debugger  не  может
 перезагрузить вашу программу. Это, скорее всего, означает, что вы
 случайно  стерли  дисковый  файл,  в  который  была  "сброшена"
 программа (SWAPP.$$$).  Единственное, что может сделать отладчик,
 это  перезагрузить  вашу  программу  точно  так  же,  как если бы
 выполнили команду меню File/ Open.

      Error writing block to disk
      (Ошибка при записи блока на диск)
      Блок, который вы указали,  не может быть записан в  заданный
 файл.   Возможно,   размер   блока  превышает  размер  свободного
 пространства на диске.

      Error writing log file
      (Ошибка записи файла журнала)
      Заданный блок  не  может  быть  записан  в  заданный   файл.
 Возможно, вы задали размер,  превышающий размер свободной области
 на диске.

      Error writing to file
      (Ошибка при записи в файл)
      Turbo Debugger не может сохранить внесенные вами изменения в
 дисковом  файле.  Возможно  файл помечен как "только для чтения",
 либо в процессе записи произошла аппаратная ошибка.

      Expression accesses more then one scope
      (Выражение обращается более чем к одной области действия)
      В сочетании с точкой останова вы ввели выражение, содержащее
 обращения  к переменным,  находящимся в разных областях действия.

 = 47 =

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

      Expression too complex
      (Выражение слишком сложное)
      Вы задали слишком сложное выражение;  вам необходимо  ввести
 выражение с меньшим количеством операций и операндов. В выражении
 может быть  до  64  операций  и  операндов.  Примерами  операндов
 являются имена констант и переменных. Примерами операций являются
 сложение (+),  присваивание (= или :=),  выбор элемента структуры
 (->) и принадлежность множеству (in).

      Expression with side effects not permitted
      (Выражения с побочными эффектами не допускаются)
      Вы ввели  выражение,  при вычислении которого модифицируется
 область памяти. Такого рода выражения не допускается использовать
 в  тех  случаях,  когда отладчику может потребоваться многократно
 вычислять  значение  выражения,  например,  при  работе  в   окне
 проверки или слежения.

      Extra input after expression
      (Лишние входные данные после выражения)
      Вы ввели  выражение,  которое  является  допустимым,  однако
 после этого выражения записан дополнительный  текст.  Иногда  это
 указывает   на  то,  что  в  выражении  пропущен  знак  операции.
 Например, вместо

      3 * 4 + 5 2

      должно было быть записано

      3 * 4 + 5 / 2

      Или вместо

      add ax,4 5

      должно было быть записано

      add ax,45

      Также возможно,  что  ввели  число,  используя   для   этого
 недопустимый для   текущего  языка  синтаксис,  например,  0xF000
 вместо 0F000h в ассемблерном режиме.

      Help file ___ not found
      (Файл подсказки ___ не найден)

 = 48 =

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

      Illegal procedure or function call
      (Неверный вызов процедуры или функции)
      Вы попытались  выполнить  функцию  в  то  время,  когда  это
 невозможно. Это бывает при следующих обстоятельствах:

      - Вы  пытаетесь  вызвать  функцию,  находящуюся  в   оверлее
 Паскаля.

      - Вы пытаетесь вызвать функцию,  находясь в оверлее Паскаля.

      - Вы  пытаетесь вызвать правило объектного Паскаля,  которое
 было удалено из кода интеллектуальным компоновщиком Turbo Pascal.

      Immediate operand out of range
      (Промежуточный операнд выходит за границы диапазона)
      Вы ввели команду,  в которой используется  операнд  размером
 один   байт  в  сочетании  с  промежуточным  операндом,  значение
 которого не может поместиться в одном байте.
      Например, вместо

      add BYTE PTR[bx],300

      должно было быть записано:

      add WORD PTR[bx],300

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

      Invalid argument list
      (Недопустимый список параметров)
      Введенное вами   выражение   содержит  вызов  процедуры  или
 функции,  для которой  задан  неправильно  сформированный  список
 параметров.  Список  параметров  должен  начинаться с открывающей
 круглой скобки, содержать ноль или большее количество разделенных
 запятыми   выражений,   определяющих  параметры  подпрограммы,  и
 заканчиваться закрывающей круглой скобкой. Обратите внимание, что
 для   вызова   процедур  и  функций  языка  Паскаль,  не  имеющих
 параметров, Turbo Debugger требует написания пустых скобок.
      Например, вместо

 = 49 =


      myfunc(1,2 3)

      должно было быть записано:

      myfunc(1,2,3) или

      myfunc()


      Invalid character constant
      (Недопустимая символьная константа)
      Введенное вами выражение содержит неправильно сформированную
 символьную  константу.  Символьная  константа  должна состоять из
 одиночной кавычки ('),  за которой следует один символ и еще одна
 одиночная кавычка. Например, вместо

      'A = 'a'

      должно было быть записано:

      'A' = 'a'

      Invalid far address
      (Недопустимый дальний адрес)
      При вводе  команды,  которую  требуется сассемблировать,  вы
 задали  неверно  сформированный  дальний  адрес  назначения   для
 команды  JMP  или  CALL.  Дальний  адрес  должен состоять из пары
 шестнадцатиричных чисел, разделенных двоеточием. Например, вместо

      JMP 1234:XYZ

      должно было быть записано:

      JMP 1234:1000

      Invalid format string
      (Недопустимая строка формата)
      Вы ввели строку  формата  после  выражения,  однако  она  не
 является допустимой строкой формата. Строки формата рассмотрены в
 главе 9.

      Invalid function parameter
      (Недопустимый параметр функции)
      Вы пытались вызвать  функцию  в  выражении,  но  неправильно
 задали параметры для этой функции.

      Invalid instruction
      (Недопустимая команда)
      Вы ввели    для   ассемблирования   команду   с   правильным
 мнемонический обозначением, но недопустимым операндом. Обычно это
 происходит при попытке сассемблировать команду POP CS.

 = 50 =


      Invalid instruction mnemonic
      (Недопустимое мнемоническое обозначение команды)
      При вводе   команды   для   ассемблирования  вы  ошиблись  в
 написании  мнемонического  обозначения  команды.  Команда  должна
 состоять   из   мнемонического   обозначения   и   необязательных
 аргументов. Например, вместо

      AX,123

      должно было быть записано:

      MOV ax,123

      Invalid operand separator
      (Неверный разделитель операндов)
      Вы ввели команду для ассемблирования,  однако  не  разделили
 операнды  запятой.  Если в команде имеется более одного операнда,
 между ними всегда должна стоять запятая. Например, вместо

      ADD ax 12

      должно было быть записано:

      ADD ax,12

      Invalid operand(s)
      (Недопустимый(е) операнд(ы))
      Команда, которую вы пытались сассемблировать  содержит  один
 или   несколько   операндов,   которые   являются  недопустимыми.
 Например,  команда MOV  не  может  иметь  два  операнда,  которые
 обращаются к памяти,  некоторые команды можно использовать только
 с операндами размером в одно слово.
      Например, вместо

      POP al

      должно было быть записано:

      POP ax

      Invalid operator/data combination
      (Недопустимое сочетание операции/данных)
      Вы ввели  выражение,  в  котором  для  операции  задан такой
 операнд,  над которым данная операция не  может  быть  выполнена;
 например,   попытка   умножить  константу  на  адрес  функции  из
 отлаживаемой программы.

      Invalid pass count entered
      (Введено недопустимое количество проходов)
      Вы ввели количество проходов для точки останова,  которое не
 находится в диапазоне от 1 до 65535. Не допускается устанавливать

 = 51 =

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

      Invalid register
      (Недопустимый регистр)
      В ассемблируемой  команде  задан  недопустимый   регистр   с
 плавающей точкой.  Обозначение регистра с плавающей точкой должно
 состоять из букв ST,  за которыми в круглых скобках может  стоять
 число от 0 до 7, например, ST, ST(4).

      Invalid register combination in addreess expression
      (Недопустимая комбинация регистров в адресном выражении)
      При вводе  команды  для  ассемблирования  вы задали операнд,
 который не содержит  одну  из  допустимых  комбинаций  базовых  и
 индексных регистров.  Адресное выражение должно содержать базовый
 регистр, индексный регистр, либо один из них. Базовыми регистрами
 являются  BX  и BP,  а индексными являются регистры SI и DI.  Ниже
 приведены примеры допустимых комбинаций регистров.

      BX  BX+SI
      BP  BP+SI
      DI  BX+DI
      SI  BP+DI

      Invalid register in address espression
      (Недопустимый регистр в адресном выражении)
      Вы ввели  команду для ассемблирования,  в которой в адресном
 выражении между квадратными скобками стоит  недопустимый регистр.
 В  адресных выражениях можно использовать только регистры BX, BP,
 SI и DI.

      Invalid symbol in operand
      (Недопустимый символ в операнде)
      При вводе  команды  для  ассемблирования  вы  начали  запись
 операнда  с  символа,  который  никогда  не может стоять в начале
 операнда, например, двоеточие.

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

      (x *)p

      следует записать как

      (struct x *)p

      Правильное приведение  типа  начинается  с  известного  типа

 = 52 =

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

      Longint(p)

      или

      Word(p^)

      Invalid value entered
      (Недопустимое введенное значение)
      При запросе  адреса  памяти  вы  ввели  значение с плавающей
 точкой вместо целого значения.

      Keyword not a symbol
      (Ключевое слово не является обозначением)
      (Только для Си и ассемблера) Введенное вами  выражение языка
 Си  содержит  ключевое  слово там,  где требуется имя переменной.
 Ключевые   слова   можно   использовать   только   в    операциях
 преобразования типа,  за исключением специальной операции sizeof.
 Например, вместо

      floatval = char charval

      должно было быть записано:

      floatval = (char)charval

      Left side not a record, structure or union
      (Левая часть  выражения не является записью,  структурой или
 объединением)
      Вы ввели  выражение, в  котором используются селекторы элемента
 структуры языка  Си (.  или ->)  или определитель  поля записи языка
 Паскаль (.).  Однако, перед этим символом не стоит ни имя записи или
 структуры, ни указателя на запись или структуру.

      No coprocessor or emulator installed
      (Ни сопроцессор, ни эмулятор не установлен)
      Вы пытались вызвать  окно  числового  процессора  с  помощью
 команды View/Numeric Processor главного меню, однако либо в вашей
 машине  не  установлен  числовой  процессор,  либо   отлаживаемая
 программа не использует программный эмулятор.

      No hardware debugging avaliable
      (Аппаратная отладка недоступна)
      Вы попытались   установить   точку   останова,  для  которой
 требуется   поддержка   аппаратной   отладки,   однако    драйвер
 аппаратного  отладчика  не  установлен.  Это  сообщение об ошибке
 также выдается в том случае,  если драйвер аппаратного  отладчика
 не может найти нужные ему аппаратные средства.

      No help for this context

 = 53 =

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

      No modules with line number information
      (Нет модулей с информацией о номерах строк)
      Вы использовали команду View/Module,  однако Turbo  Debugger
 не   может   найти  ни  одного  модуля,  содержащего  необходимую
 отладочную информацию,  чтобы  разрешить  вам  просмотр  исходных
 текстов  модулей.  Это  сообщение  обычно  выдается  при  отладке
 программы,  не имеющей таблицы обозначений.  Для получения  более
 подробной информации о таблицах обозначений обратитесь к описанию
 сообщения "Program has no symbol table", приведенному ниже.

      No previos search expression
      (Искомое выражение не было задано)
      Вы попытались выполнить команду Next локального меню подокна
 Text,  однако  вы  предварительно не выполнили команду Search для
 задания  искомого  выражения.  Команду  Next  можно  использовать
 только  после  того,  как  в каком-либо подокне выполнена команда
 Search.

      No program loaded
      (Программа не загружена)
      Вы попытались  выполнить  команду,  для  которой   требуется
 предварительная  загрузка  программы.  Имеется большое количество
 команд,  которые могут быть выполнены только в том  случае,  если
 программа  загружена.  Например,  ни  одна  из  команд  меню Run,
 вызываемого из главного меню,  не может быть выполнена,  если  не
 была  загружена  программа.  Прежде  чем  выполнять  эти команды,
 загрузите программу с помощью команды File/Open.

      No source file for module___
      (Отсутствует исходный файл для модуля ___)
      Для модуля, который вы хотите просмотреть, отладчик не может
 найти  исходный  файл.  Если исходный файл находится не в текущей
 директории,  необходимо  использовать  команду  Options/Path  for
 Source  для  указания  директории,  в  которой находятся исходные
 файлы.

      No type information for this symbol
      (Нет информации о типе для данного обозначения)
      Вы ввели  выражение,   которое   содержит   имя   переменной
 программы,  для  которой  отсутствует отладочная информация.  Это
 может произойти,  если переменная находится в модуле, который был
 скомпилирован  без формирования правильной отладочной информации.
 Вы можете задать тип  переменной,  записав  перед  ней  выражение
 преобразования   типа,   которое   будет   определять   тип  этой
 переменной.


 = 54 =

      Not a function name
      (Не имя функции)
      Вы ввели выражение,  содержащее вызов функции,  однако  имя,
 записанное   перед   открывающей   круглой  скобкой,  с  которого
 начинается вызов функции,  не является именем  функции.  Если  за
 некоторым   именем   сразу   же   стоит   скобка,  это  выражение
 рассматривается как вызов функции.

      Not a memory referencing espression
      (Выражение не содержит обращений к памяти)
      Вы ввели выражение,  которое не обращается к области памяти.
 Имеется  много  случаев,  когда  выражение  должно  обращаться  к
 области памяти,  а не только возвращать значение.  Например,  для
 команды   Expression/Inspect   главного   меню  требуется,  чтобы
 проверяемый элемент данных являлся областью памяти,  а не  просто
 выражением, имеющим некоторый результат.
      Например, выражение

      3 * 4 < (9 -1)

      не обращается к памяти, а выражение

      myarray[4]

      обращается к области памяти.

      Not an Object Pascal or C++ program
      (Это не программа на С++ или объектном Паскале)
      Ваша программа  написана   не   на   С++   или   объектно-
 ориентированном  Паскале  и не содержит объектов;  следовательно,
 выбранная вами команда не может быть выполнена.

      Not a record, structure, or union member
      (Не элемент записи, структуры или объединения)
      Вы ввели  выражение,  в   котором   используется   один   из
 селекторов   элемента   структуры   языка   Си  (.  или  ->)  или
 определитель поля записи языка Паскаль (.).  Однако перед  данным
 обозначением  не стоит ни имя структуры или записи,  ни указатель
 на структуру или запись.

      Not enough memory for seleced operation
      (Не хватает памяти для выбранной операции)
      Вы задали команду,  для  которой  необходимо  создать  окно,
 однако  для  нового  окна  не  осталось  достаточного  количества
 памяти.  Прежде чем выполнить эту команду,  вы должны удалить ряд
 окон или уменьшить их размеры.

      Not enough memory to load program
      (Не хватает памяти для загрузки программы)
      Таблица обозначений вашей программы была успешно загружена в
 память,  однако для загрузки самой программы в памяти не осталось
 места.  Если  в  вашем компьютере имеется расширенная память типа

 = 55 =

 EMS, убедитесь в том, что отладчик настроен на использование этой
 памяти  для  загрузки  таблицы  обозначений.  Для  того чтобы это
 сделать,  надо использовать параметр  -se  командной  строки  или
 установить его постоянно с помощью программы TDINST.

      Если в компьютере нет расширенной памяти,  либо программа не
 загружается  даже  при  наличии  расширенной  памяти,  вы  можете
 соединить  вместе  два  компьютера  и запустить Turbo Debugger на
 одном из них, а программу, которую требуется отладить, на другом.
 Чтобы узнать,  как это сделать,  обратитесь к приложению E.  Либо
 рассмотрите отладку в защищенном  режиме  при  помощи  TD286  или
 виртуальную отладку  при помощи TD386.  Это описано в главах 15 и
 16.

      Not enough memory to load symbol table
      (Не хватает памяти для загрузки таблицы обозначений)
      Недостаточно места  для  того,  чтобы  загрузить  в   память
 таблицу обозначений вашей программы. Таблица обозначений содержит
 информацию,  которую Turbo Debugger использует для отображения на
 экране  исходного  текста  и переменных программы.  Если в памяти
 находятся  какие-либо  резидентные  программы,  выгрузите  их  из
 памяти,  а  затем  еще  раз запустите отладчик.  Попробуйте также
 уменьшить  размер  таблицы   обозначений,   заставив   компилятор
 формировать отладочную информацию только для тех модулей, которые
 вас интересуют для отладки.  Когда выдается это  сообщение,  сама
 программа еще не загружена в память.  Это означает, что вы должны
 освободить память для загрузки таблицы обозначений и программы. В
 случае  использования  TD386  параметр -f заставит TD эмулировать
 расширенную память. Подробности см. в главе 15.

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

      Only one operand size allowed
      (Допускается только один размер операнда)
      Вы ввели команду  для  ассемблирования,  в  которой  имеется
 более одного указателя размера.  После того, как вы задали размер
 операнда, вы не можете изменить его. Например, вместо

      mov WORD PTR BYTE PTR[bx],1

      должно было быть записано:

      mov BYTE PTR[bx],1

      Operand must be memory location
      (Операнд должен являться ячейкой памяти)
      Вы ввели выражение,  содержащее подвыражение, которое должно
 обращаться  к области памяти,  однако не делает этого.  Примерами
 операций,  для которых  требуется  обращение  к  памяти  являются
 операции присваивания (=,  += и т.д.) и операции положительного и

 = 56 =

 отрицательного приращения (++ и --).

      Operand size unknown
      (Неизвестен размер операнда)
      Вы ввели команду для ассемблирования,  но не указали  размер
 операнда. Некоторые команды, выполняющие действия над байтами или
 словами  требуют,  чтобы  был  указан  размер,  если  его  нельзя
 установить из самих операндов.

      Например, вместо

      add [bx],1

      должно было быть записано:

      add BYTE PTR[bx],1

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

      Path not found
      (Маршрут не найден)
      Вы ввели  комбинацию  диска   и   директории,   которой   не
 существует.  Проверьте,  правильно  ли указан диск и правильно ли
 записано имя директории.

      Path or file not found
      (Маршрут или файл не найден)
      Вы задали несуществующее или неверное имя файла в  ответ  на
 запрос ввести файл для загрузки.  Если вы не знаете точного имени
 файла,  который хотите  загрузить,  вы  можете  выбрать  файл  из
 списка,  нажав  клавишу  Enter  при  первом  появлении запроса на
 экране.  Имена в списке,  заканчивающиеся  обратным  слешем  (\),
 означают   директории   и   позволяют   перемещаться   по  дереву
 директорий, просматривая списки содержащихся в них файлов.

      Program has invalid symbol table
      (Программа имеет недопустимую таблицу обозначений)
      Таблица обозначений,  присоединенная   к   программе,   была
 запорчена. Заново создайте файл типа EXE и перезагрузите его.

      Program has no symbol table
      (Программа не имеет таблицы обозначений)
      Программа, которую  вы собираетесь отлаживать,  была успешно
 загружена,  однако  она  не  содержит   никакой   информации   об
 обозначениях,  необходимой  для  отладки.  Несмотря  на  это,  вы

 = 57 =

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

      Чтобы создать  таблицу  обозначений  в  языке  Turbo  Pascal
 (версии  5.0  или  более  поздней)  включите  режим  формирования
 информации  для  отладки  с  помощью   команды   Debug/Standalone
 Debugging (или с помощью параметра /v командной строки при работе
 с компилятором TPC.EXE).  Если вы используете компилятор Turbo  C
 или   Turbo   С++,  то  для  формирования  отладочной  информации
 компилировать и компоновать (TLINK) программу нужно с опциями -v.
 В случае Turbo Assembler, для того, чтобы сформировать отладочную
 информацию,  вы должны ассемблировать программу с  опцией  -zi  и
 скомпоновать  программу  с помощью компоновщика TLINK,  используя
 опцию /v.

      Program linked with wrong linker version
      (Программа скомпонована с помощью неверной версии компоновщика)
      Вы пытались  отладить   программу,   содержащую   устаревшую
 отладочную  информацию.  Перекомпонуйте  свою программу с помощью
 последней версии компоновщика или перекомпилируйте ее  с  помощью
 последней версии компилятора Turbo Pascal.

      Program not found
      (Программа не найдена)
      Программы с  указанным  именем  не существует.  Либо введите
 правильное имя, либо выберите программу из списка файлов.

      Register cannot be used as negative address
      (Регистр не может использоваться в качестве отрицательного
      адреса)
      Вы ввели  команду для ассемблирования,  в которой попытались
 использовать   базовый   или   индексный   регистр   в   качестве
 отрицательного  смещения.  Базовые  и  индексные  регистры  можно
 использовать только для задания положительного смещения.
      Например, вместо

      INC WORD PTR[12-BX]

      должно было быть записано:

      INC WORD PTR[12+BX]

      Register or displacement expected
      (Требуется регистр или смещение)
      Вы ввели   команду  для  ассемблирования,  которая  содержит
 неправильно сформированное выражение,  стоящее между  квадратными
 скобками.  Между  квадратными  скобками могут стоять только имена
 регистров и постоянные значения смещения,  которые задают базу  и
 индекс.

      Repeat count not allowed

 = 58 =

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

      Run out of space for keystroke macros
      (Клавишный макрос выходит за допустимые границы)
      Макрос, который   вы   записываете,  выходит  за  допустимые
 границы.  Для всех макросов вы можете  записать  до  256  нажатий
 клавиш.

      Search expression not found
      (Искомое выражение не найдено)
      Текст или  байты,  которые  вы  указали,  не найдены.  Поиск
 начинается с текущего положения в файле,  указанного курсором,  и
 осуществляется   в   направлении  конца  файла.  Если  вы  хотите
 выполнить поиск по всему файлу,  то прежде  чем  вводить  команду
 поиска нажмите клавиши Ctrl-PgUp.

      Source file ___ not found
      (Исходный файл ___ не найден)
      Turbo Debugger  не  может  найти  исходный  файл для модуля,
 который вы хотите проверить.  Прежде чем  выдать  это  сообщение,
 отладчик ищет файл в следующих местах:

      -  там, где его находил компилятор;

      - в директориях,  заданных с помощью параметра -sd командной
 строки и команды Options/Path for Source;

      -  в текущей директории;

      - в директории,  в которой Turbo Debugger нашел отлаживаемую
 программу.

      Директорию, содержащую исходный файл,  необходимо добавить в
 список просматриваемых директорий с помощью  команды Options/Path
 for Source.

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

      Symbol table file not found
      (Файл таблицы символических имен не найден)
      Заданный вами файл таблицы символических имен не существует.
 Такой файл может иметь расширения либо .TDS, либо .EXE.


 = 59 =

      Syntax error
      (Синтаксическая ошибка)
      Вы ввели  выражение  в  неверном  формате.   Это   сообщение
 выдается  в  том  случае,  когда не могут быть использованы более
 конкретные сообщения об ошибках.

      Too many files match wildcard mask
      (Слишком много файлов соответствуют метасимвольной маске)
      Вы задали метасимвольную маску файла,  которой соответствует
 более  100  файлов.  На экране будут отображены только первые 100
 файлов.

      Type EXIT to return to Turbo Debugger
      (Для возврата в Turbo Debugger введите команду EXIT)
      Вы выполнили   команду   File/DOS   Shell.   Это   сообщение
 информирует вас о том, что когда вы выполните нужные команды DOS,
 вы должны ввести команду EXIT, чтобы возобновить сеанс отладки.


      Unexpected end of line
      (Неожиданный конец строки)
      При вычислении   значения   выражения  конец  выражения  был
 обнаружен до того,  как  было  распознано  допустимое  выражение.
 Например, вместо

      99 - 22 *

      должно было быть записано:

      99 - 22 * 4

      а вместо

      SUB AX,

      должно было быть записано:

      SUB AX,4

      Unknown character
      (Неизвестный символ)
      Вы ввели  выражение,  содержащее символ,  который никогда не
 может использоваться в выражениях,  например,  обратная одиночная
 кавычка (`) в языке Си.

      Unknown record or structure name
      (Неизвестное имя записи или структуры)
      Вы ввели   выражение,   содержащее  преобразование  типа,  с
 неизвестным   именем   записи,   структуры,    объединения    или
 перечисления.  (Заметим,  что  структуры в языках Си и ассемблера
 имеют свою собственную область имен, отличную от переменных.)


 = 60 =

      Unknown symbol
      (Неизвестное обозначение)
      Вы ввели выражение,  содержащее недопустимое  имя  локальной
 переменной. Либо имя модуля является недопустимым, либо локальное
 имя или номер строки записаны неверно.

      Unterminated string
      (Незавершенная строка)
      Вы ввели  строку,  которая  не   заканчивается   закрывающей
 кавычкой  (*  в Си,  ' в Паскале).  Если вы хотите ввести строку,
 содержащую   кавычки,   в   Паскале   она    должны    содержать
 дополнительные кавычки.  Чтобы ввести строку, содержащую кавычки,
 в языке Си необходимо поставить перед кавычкой обратный слеш (\).

      Value must be between 1 and 32
      (Значение должно лежать в диапазоне от 1 до 32)
      Вы ввели недопустимое  значение  ширины  табуляции.  Символы
 табуляции должны располагаться как минимум через 1 столбец,  и не
 дальше чем через 32 столбца.

      Value out of range
      (Значение вне диапазона)
      Вы ввели значение переменной Паскаля,  лежащее вне диапазона
 допустимых для этой переменной значений.

      Video mode not available
      (Видеорежим не поддерживается)
      Вы попытались  переключить  монитор  в режим 43/50-строчного
 отображения,  однако ваш дисплейный адаптер не поддерживает  этот
 режим.  Режим  43/50-строчного  отображения поддерживается только
 адаптерами EGA и VGA.

      Video mode switched while flipping pages
      (Во время листания страниц сменился видео- режим)
      Ваша программа изменила видео- режим  дисплея,  когда  Turbo
 Debugger находился  в  режиме  "листания"  страниц.  Это означает
 вероятную потерю экранной информации вашей программы.  Для  того,
 чтобы избежать   этой   ошибки,  вам  следует  включить  параметр
 командной  строки    -ds,    устанавливающий    режим    свопинга
 видеоизображения.
                           Информационные сообщения                            
 -----------------------------------------------------------------

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

      TDREMOTE online
      (Программа TDREMOTE подключена)
      Turbo Debugger успешно установил связь с драйвером удаленной
 отладки  TDREMOTE,  загруженном  на  удаленной  системе.  Если вы

 = 61 =

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

      Waiting for handshake from TDREMOTE (Ctrl-Break to quit)
      (Ожидание подтверждения связи от TDREMOTE (Для выхода нажмите
       клавиши Ctrl-Break))
      Вы сообщили   отладчику   Turbo  Debugger,  что  собираетесь
 отлаживать свою  программу  на  удаленной  системе,  подключенной
 через  последовательный порт (параметры -r,  -rs и - rp командной
 строки).  Теперь отладчик ждет,  когда удаленная система передаст
 ему информацию о том, что она работает.

      Вы можете   прервать   работу  отладчика  Turbo  Debugger  и
 вернуться в DOS, нажав комбинацию клавиш Ctrl-Break.




 = 62 =

                                                                               
Приложение G   Использование отладчика Turbo Debugger с различными языками
 ---------------------------------------------------------------------------

      В этом  приложении  собраны  некоторые  советы  по  наиболее
 эффективному использованию отладчика Turbo Debugger  с различными
 языками программирования.
                  Советы по отладке программ на языке Turbo C                  
 -----------------------------------------------------------------

 Оптимизация кода компилятором   ---------------------------------

      Если вы используете параметр -O командной строки  при работе
 с  компилятором TCC или команду Options/Compiler/Optimization при
 работе с интегрированной средой  разработки  для  задания  режима
 генерации   оптимизированного   кода,   у  вас  могут  возникнуть
 трудности при  пошаговой  отладке  отдельных  участков  исходного
 текста программы. В частности, если в программе имеются вложенные
 операторы if/else или несколько таких  операторов,  то  остановка
 программы  при  проходе  каждого  оператора  else может оказаться
 затруднительной.  Цикл  "for"  также  переформировывается   таким
 образом,  что  в  некоторых  случаях  при  его  трассировке могут
 возникнуть некоторые затруднения.

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

 Доступ к ссылочным данным   -------------------------------------

      В языке  Си  для обращения к массивам элементов данных часто
 используются  указатели.  Когда  пользователь   хочет   проверить
 ссылочную  переменную,  обычно  Turbo  Debugger показывает только
 один элемент,  на который ссылается  указатель.  Для  того  чтобы
 получить  доступ  к  указателю,  как  к  массиву,  можно  вначале
 проверить  этот  элемент  данных  одним  из   обычных   способов,
 например,  поместив  курсор  на  переменную в окне модуля и нажав
 клавишу Ctrl-I,  а затем задать диапазон просмотра  переменных  с
 помощью  команды  Range локального меню окна проверки.  Например,
 если в программе имеется следующий фрагмент текста:

      char *p, buf[80];
      for (p = buf; p < buf + sizeof(buf); p++) {
           ...
      }

      можно проверить  переменную  p  как массив символов,  выбрав
 команду Range из локального меню окна проверки и введя в качестве
 начального индекса 0, а в качестве числа элементов 80.

 Пошаговая отладка сложных выражений    --------------------------

 = 63 =


      Если имеется сложное выражение, например,

      if (isvalid(x)  && luseless(x)) {
           ...
      }

      может потребоваться      проверить     результат     каждого
 подвыражения,  входящего в состав  данного  условного  выражения.
 Если в выражении имеются вызовы функций, это можно сделать, начав
 трассировку функции по клавише F7,  а затем  поместив  курсор  на
 закрывающую  скобку  }  в конце данной функции и нажав клавишу F4
 для того,  чтобы выполнить функцию до данной точки. Затем следует
 выбрать команду Data/ Function Return,  чтобы проверить значение,
 которое  будет  возвращено  данной  функцией.  Если  в   условном
 выражении имеются другие вызовы функций, после этого можно нажать
 клавишу  F7,  чтобы  остановить  выполнение  на   первой   строке
 следующей  функции,  входящей  в условное выражение.  Затем можно
 повторить  описанную   процедуру   для   проверки   возвращаемого
 значения.

      Если имеется   сложное   выражение,  не  содержащее  вызовов
 функций, например,

      if (x <= 5 && y[z] > 8) {
           ...
      }

      и требуется  проверить   результат   каждого   подвыражения,
 следует открыть окно процессора, осуществить пошаговое выполнение
 на  уровне  ассемблера  и  проверить  результаты,  помещаемые   в
 регистры процессора.
              Советы по отладке программ на языке Turbo Assembler              
 -----------------------------------------------------------------

 Просмотр строк шестнадцатиричных данных   -----------------------

      Для просмотра построчного  шестнадцатиричного  дампа  памяти
 можно  использовать команды Data|add Watch и Data|Evaluate/Modify
 с модификатором формата, например, команда

      [ES:DI],20m

      указывает, что    вы    хотите    просмотреть     построчный
 шестнадцатиричный дамп области памяти,  содержащей 20 байтов,  на
 которую указывает пара регистров ES:DI.

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

      Можно выполнять  ассемблерный  код   в   пошаговом   режиме,
 используя  окно  модуля  точно так же,  как и для языков высокого

 = 64 =

 уровня.  Если  требуется  проверять  значения  регистров,   можно
 поместить окно регистров справа от окна модуля.

      В некоторых   случаях   может   потребоваться   одновременно
 просматривать исходный код  и  состояние  процессора.  Для  этого
 следует открыть окно процессора, а затем в локальном меню подокна
 кода установить параметр Mixed в состояние  "both"  (оба).  Таким
 образом вы сможете одновременно просматривать как исходный текст,
 так и байты машинного кода.  Если требуется  просматривать  байты
 машинного  кода,  не  забудьте  увеличить размер окна процессора,
 нажав клавишу F5.

 Проверка и изменение значений регистров   -----------------------

      Наиболее очевидный  способ   изменения   значения   регистра
 состоит  в его выделении курсором либо в окне процессора,  либо в
 окне  регистров.  Наиболее  быстрый  способ  изменения   значения
 регистра - это использование команды F10/Data/Evaluate/Modify. Вы
 можете  ввести  выражение,  выполняющее   присваивание,   которое
 непосредственно   модифицирует   содержимое  регистра,  например,
 выражение

      SI=99

 загрузит в регистр SI число 99.

      Аналогично, используя ту же методику,  вы  можете  проверять
 значения регистров, например, команда

      Alt-D E AX

 отобразит значение регистра AX.
               Советы по отладке программ на языке Turbo Pascal                
 -----------------------------------------------------------------

 Пошаговое выполнение кода инициализации   -----------------------

      При загрузке программы  в  отладчик  Turbo  Debugger  маркер
 выполнения    (стрелка,   направленная   вправо)   указывает   на
 зарезервированное   слово   begin   в   основной   программе.   В
 действительности   оператор  begin  соответствует  серии  вызовов
 разделов инициализации всех модулей, которые использует программа
 (предполагается,  что они имеют код инициализации). Все программы
 начинаются с вызова кода инициализации модуля System.

      Если в этой точке вы нажмете F7  (активную  клавишу  команды
 Run/Trace  Into),  вы  попадете  в  первый  модуль,  имеющий  код
 инициализации,  который был скомпилирован в  режиме  формирования
 информации   для  отладки.  Если  вы  нажмете  клавишу  F7  после
 прохождения слова  end  кода  инициализации  первого  модуля,  вы
 попадете  в  следующий  модуль.  В  конце  концов  вы вернетесь в

 = 65 =

 главную программу и сможете выполнить ее первый оператор.

      Если же в начале программы вы нажмете F8  (активную  клавишу
 команды  Run/Step  Over),  вы  пропустите  выполнение  всего кода
 инициализации  и  начнете  пошаговое  выполнение  тела   основной
 программы.

 Пошаговое выполнение процедур выхода   --------------------------

      Когда выполнение     программы    завершается,    управление
 передается  цепочке   процедур   выхода   (обратитесь   к   главе
 "Углубленное   знакомство  с  языком  Turbo  Pascal"  Справочного
 руководства  по  языку  Turbo  Pascal).  Когда   вы   продолжаете
 выполнять   пошаговую   отладку   после  оператора  end  основной
 программы,  Turbo  Debugger  не  выполняет  трассировку  процедур
 выхода.   Для  того  чтобы  осуществить  пошаговую  отладку  этой
 цепочки,  поместите точку останова в оператор  выхода  из  каждой
 процедуры, которую требуется отладить.

 Константы   -----------------------------------------------------

      Идентификаторы констант  распознаются  только для числовых и
 типизованных констант, например,

      program Test;
      const
        A = 5;
        B = Pi;
        Message = 'Testing';
        Caps = ['A'..'Z'];
        Digits : string[10] = '0123456789';
      begin
        Writeln(A);
        Writeln(B);
        Writeln(Message);
        Writeln('A' in Caps);
        Writeln(Digits);
      end.

      В этой  программе вы можете проверить A (числовую константу)
 и Digits (типизованную константу),  однако не можете проверить  B
 (константу   с  плавающей  точкой),  Message  и  Caps  (строковую
 константу и константу-множество).

 Промежуточные строки и множества в стеке   ----------------------

      Если вы используете окно  процессора,  имейте  в  виду,  что
 Turbo  Debugger  автоматически  размещает  промежуточные строки и
 множества в стеке. Он делает это следующим образом.

      Для операции "+",  выполняемой над строками,  и всех функций
 обработки  строк  резервируется стековое пространство,  в которое

 = 66 =

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

 Искусное преобразование типов   ---------------------------------

      В модуле  Dos  определен  внутренний  формат данных для всех
 предопределенных типов.  Вы можете использовать эти описания  для
 проверки содержимого любой файловой переменной. Попробуйте ввести
 приведенную ниже программу.

      program Typecast;
      uses Dos;
      var
        TextFile : Text;
        IntFile : file of Integer;
      begin
        Assign(TextFile, 'TEXT.DTA');
        Rewrite(TextFile);
        Assign(IntFile, 'INT.DTA');
        Rewrite(IntFile);
        Close(TextFile);
        Close(IntFile);
      end.

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

      IntFile
      TextFile
      FileRec(IntFile),r
      TextRec(TextFile),r

      Первые два   выражения  будут  показывать  состояния  файлов
 (CLOSED,  OPEN,  INPUT, OUTPUT) и имена дисковых файлов, а вторые
 два   используют   преобразование   типа   для  отображения  имен
 внутренних полей и значений файловых переменных.
        Советы по использованию окна процессора для программ на Паскале        
 -----------------------------------------------------------------

      - Подпрограммы модуля System не имеют имен.  При слежении за
 командой вызова  в  окне  процессора,  вы  увидите  обращение  по
 абсолютному адресу, а не по символическому имени.

      - Для  ряда  подпрограмм  ввода/вывода,  например  ReadLn  и
 WriteLn, часто формируется несколько вызовов на языке ассемблера.

      - Для  контроля  границ,  стека  и   операций   ввода/вывода
 формируются   вызовы   библиотечных  подпрограмм  для  выполнения
 соответственных функций.


 = 67 =

      - Ряд операций (умножение значений типа logint, конкатенация
 строк   и   др.)   реализуется  посредством  вызова  библиотечных
 подпрограмм.

      - Литеральные  константы  (строки,  множества  и   числа   с
 плавающей   точкой)   процедуры   помещаются   в   сегмент   кода
 непосредственно перед точкой входа в процедуру.



