
Глава 15
Виртуальная отладка на машине с процессором 80386
-----------------------------------------------------------------

     Отладчик Turbo  Debugger  позволяет  использовать все мощные
возможности компьютера  на  базе  процессора  80386.  Виртуальная
отладка   позволяет   отлаживаемой   программе  использовать  все
адресное пространство  в  пределах  640К,  как  если  бы  не  был
загружен   отладчик.  (При  этом  Turbo  Debugger  загружается  в
расширенную (extended) память, находящуюся за пределами 1МБ.)

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

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

Пользователям 80286
-------------------

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

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

     Для того  чтобы использовать виртуальную отладку,  вы должны
иметь компьютер на базе процессора 80386.  Кроме того,  вы должны
иметь  700К  доступной  расширенной  памяти.  Если вы используете
расширенную  память  под  RAM-диски,  кэш-память  и  т.д.,   вам,
возможно,  потребуется  создать  специальный  файл CONFIG.SYS или
AUTOEXEC.BAT,  который позволит удалять из  памяти  некоторые  из
этих   программ,   когда  вы  захотите  использовать  виртуальную
отладку.

Установка драйвера устройства для вируального отладчика
-------------------------------------------------------

     Прежде чем   запускать   виртуальный   отладчик,  необходимо
обеспечить установку его драйвера  с  помощью  файла  CONFIG.SYS.
Чтобы  это  сделать,  надо  включить  в файл CONFIG.SYS следующую
строку:

     DEVICE = TDH386.SYS

     Если вы поместили драйвер TDH386.SYS  не  в  корневую,  а  в
какуюто другую директорию, включите маршрут этой директории в имя
файла драйвера устройства.

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

     DEVICE = TDH386.SYS -e2000

будет резервировать 2000 байтов для переменных окружения DOS.

Запуск виртуального отладчика
-----------------------------------------------------------------

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

     TD386 [параметры] программа [параметры программы]

     Другими словами,  вместо  TD  вам  надо просто ввести TD386.
TD386 сам найдет исполняемую программу отладчика Turbo Debugger и
загрузит ее в расширенную память.

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

     TD386 -e512 myprog

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

     Обычно, если  ваша  система  поддерживает стандарт XMS,  нет
необходимости информировать  TD386  о  том,  сколько  расширенной
памяти осталось  для  программ;  программы уже сообщили TD386 эту
информацию. Вы должны использовать -e только с такими программами
(как VDISK),  которые  не  поддерживают коммуникаций по стандарту
XMS.

     Поскольку, скорее всего,  вы будете всегда резервировать для
других  программ  одинаковый объем расширенной памяти,  вы можете
задать его один раз при запуске отладчика  и  затем  использовать
постоянно.  Для этого вместе с параметром -e надо задать параметр
-w,  который указывает,  что  значение,  заданное  параметром  -e
должно   быть  запомнено  в  исполняемом  файле  TD386  и  должно
использоваться постоянно.

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

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

     Ниже приведен  полный список параметров командной строки для
программы TD386.

     -?,-h     Обращается к подсказке по TD386.

     -b        Разрешает прерывать выполнение программ нажатием
               Ctrl-Break, даде когда прерывания запрещены.

     -e####    Задает количество килобайтов расширенной памяти,
               использемое другими программами или отлаживаемой
               программой. (Если ваша система поддерживает
               стандарт XMS, то данный параметр не нужен).

     -f####    Разрешает использовать эмуляцию расширенной памяти
               типа EMS посредством замещения страниц (в расширенной
               памяти) и устанавливает для сегмента страничного
               блока значение #### (в шестнадцатиричном формате).
               Последние три цифры этого значения должны быть
               нулями, например, C000 или E000. Заметим, что эта
               возможность может использоваться только для обращений
               отладчика к расширенной памяти типа EMS.
               Если вы   не   можете   загрузить   вашу   таблицу
               символических имен, попробуйте воспользоваться
               параметром -f, чтобы "занять" место из расширенной
               памяти.

                    Нет расширенной памяти:          -fD000
                    Расширенная память в D000:       -fE000
                    Расширенная память в E000:       -fD000


     -f-       Запрещает эмуляцию расширенной памяти типа EMS
               (предположительно, используется для отмены
               предыдущего параметра -f командной строки).

     -w        Модифицирует файл TD386, записывая в него новое
               значение, заданное параметром -e или -f, которое
               должно использоваться по умолчанию. Вы можете ввести
               имя нового исполняемого файла, которого еще не
               существует. В этом случае TD386 создаст новый
               исполняемый файл.

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

     TD386 -e1024 -fD000 -w


     резервирует первые  1024К  расширенной   памяти,   разрешает
эмуляцию  расширенной памяти типа EMS со страничным блоком D000 и
записывает эти значения в файл TD386.EXE.

     Чтобы посмотреть список всех параметров командной строки для
программы  TD386.EXE,  просто введите имя программы TD386 -?  или
TD386 -h и нажмите клавишу Enter.

     Примечание: Если вы работаете на машине с  процессором 80386
и  хотите  посмотреть  параметры  командной  строки для программы
TD386.EXE, вы должны предварительно загрузить драйвер TDH386.SYS.

Различия между обычной и виртуальной отладкой
---------------------------------------------

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

     - При использовании команды  File/OS  Shell  для  выполнения
команды  DOS  отлаживаемая  программа никогда не "выгружается" на
диск.  Это означает,  что не  всегда  может  хватить  памяти  для
запуска других программ из DOS.

     - В   программе   могут  использоваться  почти  все  команды
процессора 80386,  за исключением  некоторых  команд  защищенного
режима: CLTS, LMSW, LTR, LGDT и LLDT.

     - Даже  если  вы  используете  при  виртуальной  отладке все
режимы расширенной  адресации  процессора  80386  и  32-разрядные
регистры, вы не можете получить доступ к памяти за пределами 1МБ.
Если вы попытаетесь это сделать,  работа программы будет прервана
и управление будет передано отладчику.

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

        - Рабочая среда DesqView;

        - Рабочая среда Windows 386;

        - Эмулятор EMS CEMM.SYS фирмы Compaq;

        - 386^MAX.

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

     - При виртуальной отладке TD386 может  перехватывать  особые
ситуации, генерируемые   вашей   программой.  В  этом  случае  ее
выполнение останавливается,  и TD386 сообщает об особой ситуации.
Появляющееся сообщение  об ошибке конкретизирует суть этой особой
ситуации, а стрелка в подокне Code окна CPU - или курсор  в  окне
Module -  помечает  команду,  послужившую  причиной данной особой
ситуации.

     - Неожиданных прерываний при этом возникать не  должно. Если
они произойдут, обратитесь на фирму Borland.

Сообщения об ошибках программы TD386
-----------------------------------------------------------------

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

     TD386 error: 80386 device driver missing or wrong version
     (Отсутствует драйвер  виртуального отладчика  или  неправильная
версия)
     Прежде чем  вызывать программу  TD386 из  командной строки DOS,
необходимо установить драйвер TDH386.SYS с помощью файла CONFIG.SYS.

     TD386 error: Can't enable the A20 address line
     (Не допускается строка адреса A20)
     Программа TD386  не может обращаться к памяти за пределами 1МБ.
Это может  произойти, если  вы работаете на компьютере, не полностью
совместимом с IBM PC.

     TD386 error: Can't find TD.EXE
     (Не может быть найден файл TD.EXE)
     Программа TD386 не может найти файл TD.EXE.

     TD386 error: Couldn't execute TD.EXE
     (Не может быть выполнена программа TD.EXE)
     Программа TD386 не может запустить отладчик TD.EXE.

     TD386 error: Environment too long; use -e#### switch with
     TDH386.SYS
     (Строка окружения слишком длинная; используйте при установке
     драйвера TDH386.SYS параметр -e####)
     Необходимо изменить  длину строки окружения с помощью параметра
-e, как было описано в разделе 14.2.

     TD386 error: Not enough Extended Memory available
     (Недостаточный объем доступной расширенной памяти)
     Программе TD386  не хватает  памяти. Необходимо  установить  на
машину дополнительную  память, либо  освободить имеющуюся, уменьшив,
например, размер RAM-диска.

     TD386 error: Wrong CPU type (not a 80386)
     (Неправильный тип процессора (не 80386))
     На компьютере установлен другой процессор.

     Следующие ошибки  могут   возникать   при   попытке   записи
информации в файл TD386 с помощью параметра -w:

     TD386 error: Cannot open program file
     (Не может быть открыт файл программы)

     TD386 error: Cannot read program file
     (Не может быть прочитан файл программы)

     TD386 error: Cannot write program file
     (Данные не могут быть записаны в файл программы)

     TD386 error: Program file corrupted or wrong version
     (Файл программы испорчен или неправильной версии)

Сообщения об ошибках драйвера TDH386.SYS
-----------------------------------------------------------------

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

     Wrong CPU type: TDH386 driver not installed
     (Неправильный тип процессора: драйвер TDH386 не установлен)

     Invalid command line: TDH386 driver not installed
     (Неверная командная строка: драйвер TDH386 не установлен)
