NMI intersept (Перехват немаскируемого прерывания) ───────────────────────────────────────────────────────────────── Немаскируемое прерывание (NMI) - это аппаратное прерывание, которое процессор должен немедленно обрабатывать. Обычно оно ис- пользуется для обработки останова, когда возникает ошибка памя- ти: выводится сообщение типа "Memory Parity Error" ("Ошибка пари- тета памяти"), и система зависает. Другое применение этого прерывания состоит в разрешении выполнения платой отладчика прерывания при нажатии кнопки преры- вания. Поскольку при работе с Турбо отладчиком NMI по умолчанию устанавливается в значение OFF (выключено), при использовании платы отладчика вы возможно захотите включить это прерывание. Если вы работаете не на компьютере Tandy 1000A, компьютере, совместимом с IBM PC, ACER 1100 или на компьютере NEC MultiSpeed, или Турбо отладчик зависает, запустите утилиту TDINDT и выключите данный переключатель. В некоторых компьютерах немаскируемые пре- рывания используются таким образом, что это приводит к конфликту с Турбо отладчиком, поэтому, чтобы получить возможность запускать программы, запретите это прерывание. Use Expanded Memory (Использование расширенной памяти) ───────────────────────────────────────────────────────────────── Переключатель Use Expanded Memory (Использование расширенной памяти) программы TDINST позволяет определить, будет ли Турбо от- ладчик использовать для таблицы идентификаторов память EMS. Вы можете разрешить эту возможность, даже если ваша программа также использует EMS. Change Process ID (Смена идентификатора процесса) ───────────────────────────────────────────────────────────────── Данный переключатель программы TDINST управляет переключени- ем идентификатора процесса. Предупреждение: Не запрещайте использование этой воз- можности, если вы выполняете трассировку внутри DOS и не представляете себе четко технические детали, о которых расс- казывается в Приложении В. Full Trace History (Полный протокол трассировки) ───────────────────────────────────────────────────────────────── Полный протокол трассировки - это протокол вашего сеанса от- ладки, который позволяет выполнить обратную трассировку исходного кода. Поскольку использование данного параметра замедляет отлад- ку, по умолчанию он выключен. Параметр International (Международный) ───────────────────────────────────────────────────────────────── Параметр International (Международный) позволяет при его включении сортировать информацию в Турбо отладчике в поле списка в соответствии с установкой COUNTRY в файле CONFIG.SYS (при рабо- те в DOS), или в соответствии с языком, указанным в диалоговом окне International в управляющей области Windows (при работе с Windows). Подробнее об установке текущей страны или языка расска- зывается в "Руководстве пользователя по DOS" или в руководстве по Windows. Если данный параметр не установлен, Турбо отладчик сортирует записи в списке в соответствии со значениями ASCII выводимых в окне элементов (при использовании DOS) или в соответствии со зна- чениями ANSI этих элементов (при использовании Windows). DOS Shell Swap Size (Размер области при переключении в командный процессор DOS) ───────────────────────────────────────────────────────────────── Переключатель DOS Shell Swap Size (Размер переключения в ко- мандный процессор DOS) меню Options (Параметры) программы TDINST позволяет вам задать, какой объем памяти должен обеспечить Турбо отладчик, когда вы хотите ввести из его среды команду DOS. Spare Symbol Memory (Память, резервируемая для таблиц идентификаторов) ───────────────────────────────────────────────────────────────── Данное поле ввода позволяет вам задать объем памяти, которая резервируется для загрузки "вручную" таблиц идентификаторов. Remote Type (Тип удаленной отладки) ───────────────────────────────────────────────────────────────── Этот набор селективных переключателей тип удаленной отладки, которую вы хотите выполнять: отсутствует (по умолчанию), удален- ная связь черед последовательный порт или через сеть. Предупреждение: Обычно "кнопка" None остается в состоянии "выключено", поскольку активизация одного из переключателей уда- ленной отладки приводит к тому, что Турбо отладчик будет каждый раз запускать удаленную связь. Remote Link Port (Порт удаленной связи) ───────────────────────────────────────────────────────────────── Позволяет выбрать для удаленной связи порт COM1 или COM2. Link Speed (Cкорость коммуникаций) ───────────────────────────────────────────────────────────────── Позволяет выбрать одну из трех скоростей передачи, которая может использоваться для удаленной связи (9600, 19200, 38400 или 115000 бод). Network Local Name (Локальное имя в сети) ───────────────────────────────────────────────────────────────── Данный текстовый параметр позволяет вам задать имя локальной машины (машины, на которой работает TD). По умолчанию это "LOCAL". Network Remote Name (Удаленное имя в сети) ───────────────────────────────────────────────────────────────── Данный текстовый параметр позволяет вам задать имя удаленной машины (машины, на которой работает TDREMOTE или WREMOTE). По умолчанию это "LOCAL". Задание режимов вывода ───────────────────────────────────────────────────────────────── ┌────────────────────────┐ По умолчанию │ Default │ Цветной │ Color │ Черно-белый │ Black and white │ Монохромный │ Monochrome │ На жидких кристаллах │ LCD │ └────────────────────────┘ Выбор команды Mode for Display (Режим дисплея) основного ме- ню открывает меню, с помощью которого вы можете выбрать режим для вашей системы. Default Турбо отладчик выбирает тот тип графичес- (По умолчанию) кого адаптера, который имеется в вашей системе, и устанавливает соответствующим образом режим дисплея. Color (Цветной) Если у вас имеется адаптер EGA, VGA, CGA, MCGA или графический адаптер 8514, и вы выбираете его по умолчанию, то экран бу- дет работать в цветном режиме. Black and White Если у вас имеется адаптер EGA, VGA, CGA, (Черно-белый) MCGA или графический адаптер 8514, и вы выбираете его по умолчанию, то экран бу- дет работать в черно-белом режиме. Monochrome Выберите данный параметр, если вы исполь- (Монохромный) зуете цветной монитор и адаптером Hercules или монохромным адаптером, кото- рый работает только в текстовом режиме. LCD (Жидкокристал- Выберите данный параметр, если вы работа- лический) ете на жидкокристаллическом дисплее. араметры командной строки и их эквиваленты в программе TDINST ───────────────────────────────────────────────────────────────── Некоторые из описанных выше параметров можно отменить при запуске Турбо отладчика из командной строки DOS. В следующей Таб- лице показано соответствие между параметрами командной строки от- ладчика и командами программы установки TDINST, которые позволяют сделать значения этих параметров постоянными. ┌──────────┬──────────────────────┬─────────────────────────────┐ │Параметр │ Команда меню 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 │ ├───────────────────────────────────────────────────────────────┤ │ │ │ Options│Miscellaneous Miscellaneous Options │ │ │ │ -r (.) Serial │ │ -r- (.) None │ ├───────────────────────────────────────────────────────────────┤ │ │ │ Options│Miscellaneous Miscellaneous Options │ │ │ │ -rn/;r (.) Network │ │ Network Local Name │ │ Network Remote Name │ │ Network Remote Name │ │ │ ├───────────────────────────────────────────────────────────────┤ │ │ │ Options│Miscellaneous Miscellaneous Options │ │ │ │ -rp1 (.) COM1 │ │ -rp2 (.) COM2 │ │ │ ├───────────────────────────────────────────────────────────────┤ │ │ │ Options│Miscellaneous Miscellaneous Options │ │ │ │ -rs1 (.) 9600 baud │ │ -rs2 (.) 19200 │ │ -rs3 (.) 38400 │ │ -rs3 (.) 115000 │ │ │ ├───────────────────────────────────────────────────────────────┤ │ │ │ Options│Source Debugging Directories │ │ │ │ -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 │ │ -vg [X] Full Graphics Save │ │ -vg- [X] Full Graphics Save │ └───────────────────────────────────────────────────────────────┘ Полный список всех параметров командной строки утилиты TDINST можно получить, если вызвать ее с параметром -h. В процессе работы ───────────────────────────────────────────────────────────────── ┌───────────────────────────┐ Сохранить файл конфигурации │ Save configuration file...│ Модифицировать TD.EXE │ Modify TD.EXE │ └───────────────────────────┘ После того, как вы установите все параметры Турбо отладчика так, как хотите, выберите из основного меню команду Save (Сохра- нение), чтобы определить, как вы будете их сохранять. Сохранение файла конфигурации ───────────────────────────────────────────────────────────────── При выборе команду Save configuration file (Сохранение файла конфигурации) выводится диалоговое окно, инициализированное име- нем файла конфигурации, используемым по умолчанию (TDCONFIG.TD). Вы можете использовать данное имя, нажав клавишу Enter, или за- дать другое имя файла конфигурации. Если вы зададите другое имя, то можете загружать этот файл конфигурации с помощью параметра командной строки Турбо отладчика -с (при его запуске). Например: td -cmycfg myprog Вы можете также использовать для загрузки файла конфигурации после того, как загрузите отладчик, команду Options│Restore Configuration (Параметры│Восстановление конфигурации). Модификация файла TD.EXE ───────────────────────────────────────────────────────────────── Если вы выберите команду Modify TD.EXE (Модифицировать TD.EXE), то внесенные вами в конфигурацию изменения сохранятся непосредственно в выполняемом файле Турбо отладчика TD.EXE (или TDW.EXE если вы запускали TDINST с параметром -w). При следующем запуске Турбо отладчика эти изменения будут использованы по умол- чанию. В любое время, скопировав файл TD.EXE с дистрибутивного дис- ка, вы можете вернуться к стандартной конфигурации. Выход из программы TDINST ───────────────────────────────────────────────────────────────── Когда вы закончите вносить изменения в конфигурацию, возвра- титесь в основное меню, нажав нужное число раз клавишу Esc. Затем выберите команду Quit (Выход). Приложение E. Удаленная отладка ───────────────────────────────────────────────────────────────── Удаленная отладка означает с соответствии со своим названием следующее: вы запускаете Турбо отладчик на одном компьютере, а отлаживаемую программу - на другом. Две системы могут соединяться через последовательный порт или через локальную сеть LAN, совмес- тимую с NETBIOS. Удаленную отладку полезно использовать в следующих ситуаци- ях: - Когда вашей программе требуется много памяти, и вы не мо- жете запускать программу и Турбо отладчик на одном компь- ютере. В этом случае вы получаете сообщение "Not enough memory" ("Не хватает памяти"). - Ваша программа загружается с Турбо отладчиком, но для ее правильного функционирования памяти недостаточно. В этом случае в процессе отладки вы будете получать сообщения об ошибках распределения памяти. - Когда вам нужно отладить специальные программы (резидент- ные программы или драйверы устройств). - Когда вы отлаживаете программу Windows. В случае отладки прикладной программы Window у вас есть вы- бор: вы можете либо запустить на одной машине программу и Турбо отладчик для Windows (TDW), либо запустить Windows, утилиту WREMOTE и прикладную программу на одной машине, а Турбо отладчик - на другой. Хотя существует много причин, по которым желательно отлажи- вать программу с помощью двух систем, при разработке прикладной программы Windows преимущества этого становятся еще более очевид- ны: - При наличии одного монитора запуск Турбо отладчика и прик- ладной программы на одной и той же машине означает, что вы должны переключаться между символьным режимом Турбо отлад- чика и графическими экранами прикладной программы. При использовании удаленной отладки вы можете одновременно видеть экран прикладной программы и экран Турбо отладчика. (То же результат можно получить, если к одной системе у вас присоединено два монитора.) - Программа WREMOTE использует значительно меньше памяти, чем Турбо отладчик, поэтому поведение программы будет зна- чительно ближе к нормальному режиму ее работы (без фоновой загрузки отладчика). Перед тем как прибегать к удаленной отладке убедитесь, что Турбо отладчик использует преимущества работы с установленной в вашей системе расширенной памятью EMS. Управлять использованием в Турбо отладчике EMS для загрузки в нее таблицы идентификаторов программы можно с помощью утилиты TDINST. Требования к программному и аппаратному обеспечению ───────────────────────────────────────────────────────────────── Для сеанса удаленной отладки вы можете выбрать соединение через последовательный порт или через LAN (локальную сеть). В этих случаях используются разные аппаратные средства, однако должны соблюдаться следующие общие требования: - рабочая система с памятью, достаточной для загрузки Турбо отладчика (локальная система); - другой компьютер РС (удаленная система), имеющий достаточ- ный для отлаживаемых программ DOS и TDREMOTE объем памяти (или для отлаживаемой программы Windows и WREMOTE). Если вы собираетесь отлаживать прикладную программу Windows, то на удаленной машине должна быть возможность работы в защищенном режиме (это означает использование процессора 80286 и старше). Требуемый объем памяти зависит от режима, в котором выполняется Windows, но не должен быть менее 1Мб. При соединении через последовательный порт вам потребуется соединяющий две системы кабель. Убедитесь, что кабель, который вы используете для соединения двух систем, подключен правильно. Он должен по крайней мере содержать линии для приема и передачи (ли- нии 2 и 3 на 25-пиновом кабеле). Для соединения через LAN вам потребуется работающее с LAN программное обеспечение, совместимое с Novell Netware (версии IPX и NETBIOS 3.0 или старше). Перед загрузкой Турбо отладчика и WREMOTE на обеих системах следует загрузить NETBIOS. Это относится как к обычной отладки программы DOS, как и к отладке программы Windows. Отладка удаленных прикладных программ DOS ───────────────────────────────────────────────────────────────── Для отладки прикладной программы DOS вы должны выполнять TDREMOTE и прикладную программу на одной машине, а Турбо отладчик на другой. Здесь и далее машина, на которой работают TDREMOTE и отлаживаемая прикладная программа, будет называться удаленной ма- шиной, а машина, на которой работает Турбо отладчик, будет назы- ваться локальной машиной. Установка удаленной системы ───────────────────────────────────────────────────────────────── Скопируйте на удаленную систему драйвер удаленной отладки TDREMOTE.EXE. На удаленную систему также необходимо поместить все файлы, которые требуются для отлаживаемой программы. К ним отно- сятся входные файлы данных, файлы конфигурации, файлы подсказки и т.д. Запись файлов на удаленную систему можно осуществить либо с помощью дискет, либо с помощью утилиты пересылки файлов TDRF, описанной в документации на дисках. Если хотите, вы можете поместить на удаленную систему копию программы, которую вы собираетесь отлаживать. Это не является обязательным, поскольку Турбо отладчик будет сам при необходимос- ти пересылать ее по линии связи. Примечание: TDRF описывается в поставляемых файлах до- кументации. Настройка конфигурации TDREMOTE ───────────────────────────────────────────────────────────────── При запуске TDREMOTE вы должны настроить ее конфигурацию та- ким образом, чтобы она могла работать через удаленную связь. Для этого нужно запустить этот драйвер с определенным параметром ко- мандной строки. Ниже приведен полный перечень параметров команд- ной строки, поддерживаемых программой TDREMOTE. Перед параметром должен стоять либо знак переноса (-), либо косая черта (/). ┌──────────────┬───────────────────────────────────────────────┐ │ Параметр │ Что он делает │ ├──────────────┼───────────────────────────────────────────────┤ │ -? или -h │ Отображает текст подсказки │ │ │ │ │ -rp1 │ Порт 1 (COM1); это умолчание │ │ -rp2 │ Порт 2 (COM2) │ │ │ │ │ -rs1 │ Самая низкая скорость, 9600 бод │ │ -rs2 │ Низкая скорость, 19200 бод │ │ -rs3 │ Средняя скорость, 38400 бод │ │ -rs4 │ Высокая скорость, 115000 бод (по умолчанию) │ │ │ │ │ -w │ Записать значения параметров в исполняемый │ │ │ программный файл │ └──────────────┴───────────────────────────────────────────────┘ Чтобы получить список всех имеющихся параметров TDREMOTE, наберите в ответ на подсказку DOS следующее: TDREMOTE -h Настройка TDREMOTE ───────────────────────────────────────────────────────────────── Если запустить программу TDREMOTE без параметров, она будет использовать номер порта и скорость передачи, заданные по умолча- нию, то есть записанные в исполняемом программном файле (COM1 и 115000 бод), если вы их не изменяли с помощью параметра -w. Вы можете сделать параметры командной строки программы TDREMOTE постоянными, записав их обратно в выполняемый файл прог- раммы TDREMOTE, хранящийся на диске. Чтобы это сделать надо за- дать параметр -w вместе с другими параметрами, которые требуется сделать постоянными. Затем программа запросит имя исполняемого файла. В ответ на запрос можно ввести новое имя выполняемого фай- ла, которого еще не существует. В этом случае TDREMOTE создаст новый выполняемый файл. Если вы просто нажмете клавишу Enter, то будет изменена работающая в данным момент программа (обычно TDREMOTE.EXE). Если вы работаете в операционной системе DOS версии 3.0 или более поздней, запрос будет включать маршрут и имя файла, из ко- торого вы запускали программу TDREMOTE. Вы можете подтвердить это имя, нажав клавишу Enter, либо ввести новое имя выполняемого фай- ла. Файл с новым именем должен уже существовать и являться копией программы TDREMOTE, которую вы сделали ранее. Если вы работаете в DOS версии 2.х, вы требуется указать полный маршрут и имя файла выполняемой программы. Например, на удаленной системе введите в ответ на подсказку DOS команду: TDREMOTE -w -rs3 -rp2 Когда выведется подсказка, введите имя программы для модифи- кации, например tdremot2.exe. При этом TDREMOTE создает новый драйвер удаленной связи с именем TDREMOTE2.EXE. По умолчанию ис- пользуется скорость 38400 бод (-rs3) и последовательный порт COM2 (-rp2). Удаленный драйвер DOS ───────────────────────────────────────────────────────────────── Чтобы начать сеанс удаленной отладки, нужно сначала запус- тить драйвер на удаленной системе, а затем загрузить Турбо отлад- чик на локальной системе. Перед запуском TDREMOTE убедитесь, что каталог на удаленной системе установлен правильно (в нем должны содержаться файлы программы). Это существенно, так как TDREMOTE помещает программу, которую требуется отладить, в каталог, являю- щийся текущим при запуске Турбо отладчика. При загрузке TDREMOTE выводит сообщение об авторских пра- вах, указывающее, что она ожидает от вас запуска Турбо отладчика на другом конце коммуникации. Для остановки и возврата в DOS наж- мите клавиши Ctrl-Break. Запуск удаленного последовательного драйвера ───────────────────────────────────────────────────────────────── Если для соединения систем вы используете кабель без модема, то для задания скорости и порта коммуникаций нужно использовать параметры -rs и -rp. Перед запуском утилиты TDREMOTE определите, какой последова- тельный порт используется на удаленной системе (COM1 или COM2). Если это COM1, запустите TDREMOTE командой: TDREMOTE -rp1 -rs4 Заметим, что эти установки используются TDREMOTE по умолча- нию, поэтому, если используемые по умолчанию параметры не изменя- лись, эквивалентен ее запуск командой: TDREMOTE Если на удаленной системе используется последовательный порт COM2, запустите TDREMOTE командой: TDREMOTE -rp2 -rs3 Примечание: Если вы используете компьютер PS/2, задайте в командной строке параметр -rs1. Все три этих команды запускают связь с максимальной ско- ростью (115 Кбод). Для большинства компьютеров PC и кабелей это будет работать. Далее (Таблица E1) мы расскажем, как можно запус- тить связь с более низкой скоростью передачи (если у вас возник- нут трудности). Возможно, что для безмодемного соединения через кабель ло- кальная и удаленная система используют разные порты. В этом случае установки для последовательных портов систем будут не сов- падать. Однако, чтобы соединение работало, скорость связи должна быть одинаковой. Запуск удаленного драйвера LAN ───────────────────────────────────────────────────────────────── Если для соединения двух систем вы используете локальную сеть LAN, то TDREMOTE нужно запускать с параметром -rn. Например, использование в ответ на подсказку DOS следующей команды: TDREMOTE -rnremotelink приведет к запуску TDREMOTE через соединение LAN с именем удален- ной системы remotelink. Если имя удаленной системы в команде опу- щено, то по умолчанию используется имя REMOTE. Примечание: Более подробно об именах удаленных систем рассказывается ниже в разделе "Соединение через LAN". Как установить удаленную связь в DOS ───────────────────────────────────────────────────────────────── После того как на удаленной системе загружен драйвер TDREMOTE, запустите на локальной системе Турбо отладчик, исполь- зуя параметры командной строки, соответствующие установленной связи (последовательной или через LAN). Последовательное соединение ───────────────────────────────────────────────────────────────── Турбо отладчик и TDREMOTE для задания скорости и порта пос- ледовательной связи используют один и тот же синтаксис. Чтобы система правильно работала, скорость связи нужно задавать одина- ково (с помощью параметра -rs). После того как на удаленной системе загружен драйвер TDREMOTE, чтобы установить связь, запустите на локальной системе Турбо отладчик. Вот типичная команда Турбо отладчика для запуска удаленной связи: td -rs2 myprog По ней будет запущена связь через удаленный порт COM2 с ис- пользованием назначенной по умолчанию скорости обмена 115000 бод, а в удаленную систему загрузится программа myprog (если ее там еще нет). Примечание: Более подробно о загрузке программ с ис- пользованием удаленной связи рассказывается ниже в разделе "Загрузка программ на удаленной системе". Когда связь будет успешно запущена, на удаленной системе по- явится сообщение "Link established" ("Связь установлена"), а в индикаторе активности на локальной системе выводится READY (Го- тов), затем на локальной системе выводится экран Турбо отладчика. Вместо использования параметров -rs и -rp вы можете указать параметр командной строки -r, который запускает удаленную после- довательную связь через используемый по умолчанию порт с назна- ченной по умолчанию скоростью. Если вы не изменили используемые по умолчанию значения с помощью программы TDINST, то параметр -r будет определять порт COM1 и скорость 115000 бод (максимальную скорость обмена). Соединение через LAN ───────────────────────────────────────────────────────────────── Для инициализации удаленной связи через LAN в Турбо отладчи- ке используется параметр командной строки -rn. Однако используе- мый в Турбо отладчике синтаксис слегка отличается от того синтак- сиса, который используется в TDREMOTE. Когда в командной строке Турбо отладчика используется параметр -rn, он воспринимает два необязательных параметра: имя локальной системы и имя удаленной системы, разделенные точкой с запятой. Поскольку оба параметра не являются обязательными, за- пустить Турбо отладчик с параметром командной строки -rn можно четырьмя способами: TD -rn имя_файла TD -rnLOCAL1 имя_файла TD -rn;REMOTE1 имя_файла TD -rnLOCAL1;REMOTE1 имя_файла Примечание: По всем этим командам DOS Турбо отладчик загружается с использованием LAN и загрузкой для отладки программы "имя_файла". Примечания: Имена локальной и удаленной системы могут содержать до 16 символов. Первая команда использует для локальной и удаленной системы имена, назначенные по умолчанию (LOCAL и REMOTE соответственно). Вторая команда задает в качестве локальной системы LOCAL1, а для удаленной системы используется имя, назначенной по умолчанию (REMOTE). В третьей команде используемое по умолчанию имя задает- ся для локальной системы, а для удаленной задается имя REMOTE1. Наконец, в четвертой команде задается как локальное, так и уда- ленное имя. После задания команды Турбо отладчика установка связи займет не более 15 секунд. Если на локальной и на удаленной системе работает один чело- век, то нет необходимости задавать локальные и удаленные имена. Однако, удаленную отладку используют несколько человек, то для всех систем нужно задать локальные имена. Удаленная отладка прикладных программ для Windows ───────────────────────────────────────────────────────────────── Для отладки прикладной программы для Windows вы должны вы- полнять Windows, WREMOTE и прикладную программу на одной машине, а Турбо отладчик на другой. Здесь и далее машина, на которой ра- ботают Windows, WREMOTE и отлаживаемая прикладная программа, бу- дет называться удаленной машиной, а машина, на которой работает Турбо отладчик, будет называться локальной машиной. Подготовка удаленной системы ───────────────────────────────────────────────────────────────── Скопируйте на удаленную систему драйвер удаленной отладки WREMOTE.EXE и программу конфигурации WRSETUP.EXE. На удаленную систему также необходимо поместить все файлы, которые требуются для отлаживаемой программы. К ним относятся входные файлы данных, файлы конфигурации, файлы подсказки, библиотеки DLL и т.д. Если хотите, можно также скопировать на удаленную систему прикладную программу. Однако Турбо отладчик при необходимости сам передает ее по удаленной связи. Запись файлов на удаленную систему можно осуществить либо с помощью дискет, либо с помощью утилиты пересылки файлов TDRF, описанной в документации на дисках. Конфигурация WREMOTE ───────────────────────────────────────────────────────────────── До того, как вы запустите WREMOTE в первый раз, чтобы уста- новить скорость передачи данных и номер порта связи для WREMOTE, выполнить программу WRSETUP. Если вы запускаете WRSETUP первый раз, нужно использовать команду File│New (Файл│Новый) менеджера программ Windows для конфигурации WRSETUP.EXE как прикладной программы группы прикладных программ Windows. Кроме того, сделай- те то же самое для WDREMOTE.EXE. Установка WREMOTE и WRSETUP в Windows ───────────────────────────────────────────────────────────────── При выполнении WRSETUP вы увидите окно с командами File, Settings и Help. Выбрав Settings (Установки), вы получите соот- ветствующий экран. ┌──────────────────────────────────┐ │-│ WRSetup Turbo Debugger Setup │-│ ├──────────────────────────────────┤ │ File Settings Help │ │ │ │ │ │ │ │ │ │ ┌────────────────────────────┴────────────────────────┐ │ │-▒▒▒▒▒▒▒▒▒▒▒▒▒Remote Driver Settings▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ └─────┤ │ │ ┌┐ ░░░░░░OK░░░░░░ ░░░░Cancel░░░░ │ │ └┘ Disable clock interrupts │ │ ▒▒ Quit when TD quits ┌Baud rate─┐ │ │ │ o 9600 │ │ │ Starting directory: │ * 19200 │ │ │ ┌────────────────────────┐ │ o 38400 │ │ │ └────────────────────────┘ │ o 115000 │ │ │ └──────────┘ │ │ ┌Remote type───┐ │ │ │ * Serial │ │ │ │ o Network │ │ │ └──────────────┘ │ │ ┌Comm port─┐ │ │ Network remote name: │ * COM1 │ │ │ ┌────────────────────────┐ │ o COM2 │ │ │ └────────────────────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘ Рис. E.1 Основное окно WRSETUP и диалоговое окно Settings (Установки) Turbo Debugger Setup - установки Турбо отладчика; File - файл; Settings - установки; Help - справка; Remote Driver Settings - установки удаленного драйвера; Baud rate - скорость передачи; Comm port - порт связи; Disable clock interrupts - зап- рет прерываний от таймера; Quit when TD quits - выход при выходе TD; Starting directory - начальный каталог; Cancel - отмена; Remote type - тип удаленной связи; Serial - последовательная; Network - через сеть; Network remote name - имя удаленной системы в сети. Связь через последовательный порт ───────────────────────────────────────────────────────────────── Если вы используете последовательную связь, выберите селек- тивный переключатель Serial Remote Type (Тип связи через последо- вательный порт) и установите скорость передачи и последовательный порт, которые подходят для вашей аппаратной конфигурации. По умолчанию устанавливаются значения 115000 бод и COM1. Связь через LAN ───────────────────────────────────────────────────────────────── Если вы используете связь через локальную сеть, выберите се- лективный переключатель Network Remote Type (Тип связи через сеть) и задайте нужное имя удаленной системы в текстовом поле ввода Network Remote Name. По умолчанию используется системное имя REMOTE. Примечание: Подробнее об именах в удаленной системе рассказывается выше в разделе "Соединение через LAN". В окне текстового ввода Starting Directory (Начальный ката- лог) вы можете ввести маршрут доступа к каталогу, в котором Турбо отладчик будет искать отлаживаемые программы. Если вы хотите, чтобы при завершении на локальной машине Турбо отладчика на уда- ленной машине выполнялся выход из WREMOTE и отлаживаемой програм- мы (т.е. чтобы управление передавалось Windows), установите этот параметр в окне Quit When HosS Quits (Выход при завершении работы на основной машине). При использовании высокой скорости обмена (38400 или 115000 бод) выбор параметра Disable Clock Interrupts (Отменить прерывания от системных часов) может помочь вам, если у вас возникли проблемы при установке связи между Турбо отладчиком и WREMOTE. Это поможет WREMOTE и Турбо отладчику установить связь в операционной среде Windows. Установив все параметры, закройте окно WRSETUP. WRSETUP за- пишет все сделанные вами установки в файл TDW.INI в каталоге с Windows. Как и любой другой файл .INI, этот файл может быть отре- дактирован непосредственно любым текстовым редактором, работающим в формате ASCII. Следующий раздел в файле TDW.INI устанавливает для WREMOTE скорость передачи данных 19200 бод через COM2, запре- щает прерывания от системных часов и задает выход из программы (возврат в Windows) при выходе из Турбо отладчика: [WRemote] BaudRate=2 Port=2 Quit=1 Clock=1 Параметры командной строки программы WREMOTE ──────────────────────────────────────────────────────────────── Ниже приведен полный перечень параметров командной строки, поддерживаемых программой WREMOTE, при помощи которых можно пере- определить установки, сделанные в файле TDW.INI. Перед параметром должен стоять либо знак дефиса (-), либо косая черта (/). ┌───────────────┬───────────────────────────────────────────────┐ │ Параметр │ Что он делает │ ├───────────────┼───────────────────────────────────────────────┤ │ │ │ │ -c<имя_файла> │ Использовать <имя_файла> как файл конфигурации│ │ │ (файл .INI) │ │ │ │ │ -d<каталог> │ Использовать <каталог> в качестве начального│ │ │ │ │ -rc0 │ Разрешает прерывания от системных часов │ │ -rc1 │ Запрещает прерывания от системных часов │ │ │ │ │ -rp1 │ Порт 1 (COM1); это умолчание │ │ -rp2 │ Порт 2 (COM2) │ │ │ │ │ -rq0 │ Не выполнять выход при выходе из TD │ │ -rq1 │ Выполнять выход при выходе из TD │ │ │ │ │ -rs1 │ Самая низкая скорость, 9600 бод │ │ -rs2 │ Низкая скорость, 19200 бод │ │ -rs3 │ Средняя скорость, 38400 бод │ │ -rs4 │ Высокая скорость, 115000 бод (по умолчанию) │ └───────────────┴───────────────────────────────────────────────┘ Запуск удаленного драйвера Windows ───────────────────────────────────────────────────────────────── После запуска программы WREMOTE из Windows в позиции курсора появляется изображение курсора специальной формы ("песочных ча- сов"), что означает, что ожидается запуск Турбо отладчика на дру- гом конце коммуникации. Для завершения WREMOTE, ожидающей установления связи с TDW (если, например, появились проблемы соединения с TDW), нажмите на удаленной машине клавиши Ctrl-Break. Установка связи с удаленной системой с Windows ───────────────────────────────────────────────────────────────── Чтобы запустить Турбо отладчик на локальной машине, исполь- зуя связь с удаленной системой c Windows нужно добавить к команд- ной строке Турбо отладчика параметр -w. Параметр -w определяет, что программа должна отлаживаться как программа Windows. Параметр командной строки -w, используемый с Турбо отладчи- ком, в корне отличается от параметра -w командной строки TDREMOTE (TDREMOTE используется -w для записи параметров на диск). Связь через последовательный порт ───────────────────────────────────────────────────────────────── Если вы используете последовательную связь через безмодемный кабель, то чтобы установить скорость передачи и последовательный порт, можно использовать параметры -rs и -rp. Примечание: Подробнее о параметрах командной строки рассказывается выше в разделе "Соединение через последова- тельный порт". Для Турбо отладчика и WREMOTE скорость обмена должна уста- навливаться одинаково. Для задания скорости передачи для Турбо отладчика можно использовать параметр -rs или параметр -r, кото- рый запускает связь через последовательный порт, назначая порт и скорость передачи по умолчанию. Если вы не изменили с помощью TDINST параметры, используемые по умолчанию, то параметр -r зада- ет COM1 и скорость 19200 бод. Связь через LAN ───────────────────────────────────────────────────────────────── Для инициализации связи через локальную сеть, выберите пара- метр Турбо отладчика -rn. Приведем пример типичной командной строки Турбо отладчика для запуска удаленной связи с Windows: TD -rs2 -w myprog По ней будет запущена связь через используемый по умолчанию удаленный порт (обычно COM1) с использованием максимальной ско- рости обмена 115000 бод, а в удаленную систему загрузится прог- рамма myprog (если ее там еще нет). При запуске Турбо отладчика на локальной машине он выводит сообщение об авторских правах и следующее сообщение: Waiting for handshake (press Ctrl-Break to quit) (Ожидается установление связи, для выхода нажмите Ctrl-Break) Во время ожидания соединения на удаленной системе выводятся "песочные часы". Если связь успешно установлена,песочные часы ис- чезают, а на локальной машине появляется обычное окно Турбо от- ладчика. Загрузка программы в удаленную систему ───────────────────────────────────────────────────────────────── Если имя файла указано в качестве аргумента командной строки Турбо отладчика, или если вы загружаете в Турбо отладчик новый файл, используя для этого команду File│Open (Файл│Открыть), Турбо отладчик будет автоматически проверять, требуется ли передать программу по удаленной системе. Примечание: Файлы DLL Windows автоматически на удален- ную систему не передаются. В отношении загрузки программы в удаленную систему Турбо от- ладчик отличается гибкостью. Сначала он проверяет наличие прог- раммы на удаленной системе. Если программы там нет, он передает ее. Если программа на удаленной системе имеется, он анализирует дату и время копии программы на локальной системе и удаленной системе. Если копия на локальной системе более поздняя (новая), чем на удаленной, он предполагает, что вы перекомпилировали и пе- рекомпоновали программу и передает ее по линии связи. При этом на высокой скорости передачи файлы пересылаются примерно за 10 секунд. Типичная программа средней величины (60К) при максимальной скорости связи будет передана за время порядка 6 секунд. Для индикации выполняемых действий на экране удаленной системы ведется отсчет байт передаваемого файла. Сеансы удаленной отладки ───────────────────────────────────────────────────────────────── После того, как вы запустите программу TDREMOTE или WREMOTE и отладчик в удаленном режиме, вашу программу можно будет отлажи- вать с помощью команд Турбо отладчика точно также, как при работе на одной системе. Команды Турбо отладчика будут работать точно также. Нужно иметь в виду, что поскольку отлаживаемая программа в действительности работает на удаленной системе, весь вывод на эк- ран или ввод с клавиатуры выполняются на удаленной системе. При работе с удаленной связью команда Window│User Screen (Окно│Экран пользователя) не действует. Если вы при работе с Турбо отладчиком хотите передать на удаленную систему файлы, можно использовать команду DOS (вызвав команду меню File│DOS Shell (Файл│Командный процессор DOS)) и утилиту TDRF, которая поддерживает обслуживание файлов на удален- ной системе. Затем, набрав в ответ на подсказку DOS команду exit, вы можете вернуться в Турбо отладчик и продолжить отладку своей программы. Возможные затруднения ───────────────────────────────────────────────────────────────── Перечислим возможные способы устранения неисправностей, с которыми вы можете столкнуться при установке удаленной связи: - При возникновении проблем проверьте сначала кабельные кон- цы. - Проверьте, задали ли вы правильный порт или правильно ли подключились через сеть. - Попробуйте установить связь с более низкой скоростью обме- на (с помощью параметра командной строки -rs), пока связь не заработает. - Некоторые аппаратные средства или кабель могут на макси- мальной скорости не работать, поэтому можно попробовать использовать другой кабель или компьютер. - Если вы отлаживаете прикладную программу Windows, и связь в нужное время не заработала, используйте WRSETUP для зап- рета прерываний от таймера и попробуйте работать со ско- ростью 96000 бод. Если все работает, попробуйте увеличить скорость. Сообщения утилиты TDREMOTE ───────────────────────────────────────────────────────────────── Приведем список сообщений, которые вы можете получать при работе с программой-утилитой TDREMOTE: nn bytes downloaded (Передано nn байт) На удаленную систему передается файл. Это сообщение отражает процесс передачи файла. При максимальной скорости обмена выполня- ется передача около 10К в секунду. Can't create file (Невозможно создать файл) Программа TDREMOTE не может создать файл, в который нужно пересылать информацию. Это может произойти в случае переполнения диска или если файл с данным именем уже присутствует в каталоге. Can't modify exe file (Невозможно модифицировать выполняемый файл) Файл, имя которого вы задали, не является допустимой копией утилиты TDREMOTE. С помощью параметра -w можно модифицировать только копию выполняемого файла утилиты TDREMOTE. Can't open exe file to modify (Невозможно открыть выполняемый файл для модификации) Файл, имя которого вы указали для модификации, не может быть открыт. Возможно вы ввели недопустимое имя или имя несуществующе- го файла. Download complete (Передача закончена) Передача файла TDREMOTE успешно завершена. Download failed, write error on disk (Сбой при передаче: ошибка при записи на диск) TDREMOTE записала часть принятого файла на диск. Обычно это происходит при переполнении диска. Для успешной передачи файла вам придется удалить некоторые файлы. Enter program name to modify (Введите имя программы для модификации) Если вы работаете под управлении версии DOS 3.0 или более поздней, то в подсказке будет указан маршрут и имя файла, из ко- торого запущена программа TDREMOTE. Вы можете назначить это имя, нажав клавишу Enter, или ввести новое имя (файл с этим именем должен существовать и представлять собой копию программы TDREMOTE.) При работе в среде DOS версии 2.х вам нужно будет указать для выполняемого файла программы полное имя маршрута. Interrupted (Прервано) Во время ожидания установления связи с другой системой вы нажали Ctrl-Break. Invalid command line option (Недопустимый параметр командной строки) При запуске TDRF из командной строки DOS вы задали неверный параметр. Link broken (Связь прервана) Программа, осуществляющая связь с TDREMOTE, прекратила рабо- ту и вернулась в DOS. Link established (Связь установлена) На другой системе запущена программа для связи с TDREMOTE. Loading program "имя" from disk (Загрузка программы "имя" c диска) Турбо отладчик указал TDREMOTE, что нужно загрузить програм- му с диска для подготовки ее к отладке. Program load failed, EXEC failure (Сбой при загрузке программы: ошибка EXEC) DOS не может загрузить программу в память. Это может прои- зойти, если программа повреждена или усечена. Нужно удалить с диска файл программы. После этого Турбо отладчику придется пере- дать ее новую копию. Если после этого сообщение повториться, сле- дует установить связь с другой системой и повторить попытку. Program load failed; not enough memory (Сбой при загрузке программы: не хватает памяти) На удаленной системе на хватает памяти для загрузки програм- мы для отладки. Это может происходить только при отладке очень больших программ, поскольку для TDREMOTE требуется только 15К па- мяти. Program load failed; program not found (Сбой при загрузке программы: программа не найдена) TDREMOTE не может найти программу на своем диске. Эта ошибка происходить не должна, так как Турбо отладчик загружает программу на удаленную систему, если она там не найдена. Program load successful (Программа успешно загружена) TDREMOTE закончила загрузку программы для отладки. Reading file "имя" from Turbo Debugger (Считывание файла "имя" из Турбо отладчика) Турбо отладчиком передается файл. Unknown request: сообщение (Недопустимый запрос) TDREMOTE приняла недопустимый запрос из другой системы. Если связь работает нормально, это сообщение выводиться не должно. При получении данного сообщения проверьте, в порядке ли кабель. Если сообщение все равно будет выводиться, попробуйте уменьшить ско- рость передачи (с помощью параметра -rs). Waiting for handshake (press Ctrl-Break to quit) (Ожидается установление связи, для выхода нажмите клавиши Ctrl-Break) Программа TDREMOTE запущена и ждет взаимодействия с програм- мой другой системы. Если до инициализации связи вы захотите вер- нуться в DOS, нажмите клавиши Ctrl-Break. Сообщения программы WREMOTE ───────────────────────────────────────────────────────────────── Ниже приведен перечень сообщений, которые вы можете получить при работе с программой WREMOTE. Can't find configuration file (Не найден файл конфигурации) Вы задали в параметре командной строки -c несуществующий файл. Can't load WINDEBUG.DLL (Невозможно загрузить файл WINDEBUG.DLL) Динамически компонуемая библиотека WINDEBUG.DLL не находится в текущем каталоге. Для работы WREMOTE эта библиотека необходима. Can't open COMx serial port (Не открывается последовательный порт COMx) WREMOTE пытается использовать порт COM, который либо занят, либо не существует. Invalid switch (Неизвестный параметр) Вы задали нераспознаваемый программой WREMOTE параметр ко- мандной строки. No network present (Сеть отсутствует) Приложение F. Подсказки и сообщения об ошибках ───────────────────────────────────────────────────────────────── Турбо отладчик выводит сообщения об ошибках и подсказки (ди- алоговые окна) в текущей позиции курсора. В данном приложении описываются генерируемые Турбо отладчиком подсказки, сообщения об ошибках и информационные сообщения. Мы расскажем вам о том, как нужно отвечать на сообщения об ошибках и подсказки. Список сообщений (включая сообщения о сбоях при инициализации) и подсказок приведен в алфавитном порядке и с соответствующим описаниями. Подсказки ───────────────────────────────────────────────────────────────── Турбо отладчик выводит подсказку (диалоговое окно), когда от вас требуется ввод дополнительной информации (для выполнения ко- манды). В заголовке подсказки описывается, какая информация тре- буется. В содержимом может выводиться протокол (предыдущие отве- ты, которые вы ранее давали в ответ на подсказку). Отвечать на подсказку можно одним из следующих способов: - наберите ответ и нажмите клавишу Enter; - нажмите Esc для отмены подсказки и возврата в предшествую- щее меню. В некоторых подсказках возможен только выбор между двумя элементами (типа Да/Нет). Для выбора нужного элемента можно ис- пользовать клавиши управления курсором (стрелки), а затем нажать Enter, или непосредственно ввести ответ - Y (Да) или N (Нет) - и нажать клавишу Enter. Отменить команду можно с помощью клавиши Esc. Более подробно действие клавиш при подсказке описывается в Главе 2. Перечислим подсказки в алфавитном порядке: Already recording, do you want to abort? (Уже записано, хотите выйти?) Вы уже записали клавиатурную макрокоманду. Нельзя начать за- пись другой макрокоманды, пока вы не запишите текущую. Для прек- ращения записи макрокоманды нажмите Y (Да). При ответе N (Нет) запись макрокоманды будет продолжена. Device error - Retry? (Ошибка устройства, повторить?) Произошла ошибка при записи на символьное устройство (напри- мер, на принтер). Это может быть вызвано тем, что принтер не подключен, выключен, или на нем нет бумаги. Исправьте ситуацию и ответьте Y (при этом операция будет повторена) или N (для отмены операции). Disk error on drive___ - Retry? (Ошибка диска, повторить?) При обращении к указанному диску произошла ошибка. Возможно в дисковод не вставлен гибкий диск, или запорчена область винчес- тера. Если поможет повтор операции, ответьте Y (Да). Для отмены нажмите N. Edit watch expression (Редактирование выражения просмотра) Модифицируйте или замените выражение просмотра. Подсказка инициализируется текущим (подсвеченным) выражением просмотра. Enter adress, count, byte value (Введите адрес, счетчик, байтовое значение) Введите адрес блока памяти, которому вы хотите присвоить конкретное байтовое значение, затем число байт, которым нужно присвоить это значение и само значение-заполнитель. Enter adress to position to (Введите адрес, на который нужно позиционироваться) Введите адрес блока памяти который вы хотите просмотреть в своей программе. Вы можете ввести имя функции, номер строки, ука- затель на память или абсолютный адрес (подробнее об этом расска- зывается в Главе 9). Enter animate delay (10ths of sec) (Введите задержку при автоматизированной работе (1/10 секун- ды)) Задайте, с какой скоростью требуется выполнять команду Animate (Автоматизировать). Чем больше значение, тем больше будет интервал между шагами выполнения. Enter code address to execute to (Введите адрес кода, до которого нужно выполнить программу) Введите адрес программы, по которому вы хотите остановить ее выполнение. Более подробно о вводе адресов рассказывается в Главе 9. Enter comment to add to end of log (Введите комментарий для включение в конец протокола регист- рации) Введите произвольную строку текста, которая будет добавлена к сообщениям, выведенным в окне Log (Регистрация). Текст будет выведен в том виде, как вы его наберете. Enter expression for conditional breakpoint (Введите выражение для условной точки останова) Введите выражение, которое должно принимать истинное (нену- левое) значение для срабатывания точки останова. При выполнении программы данное выражение будет вычисляться каждый раз при обна- ружении точки останова. При этом нужно учитывать возможные побоч- ные эффекты вычисления выражения. Enter expression to watch (Введите выражение для просмотра) Введите имя переменной или выражение, значение которого вы хотите наблюдать в окне Watch (Просмотр). Если хотите, можете ввести выражение, которое не ссылается на ячейку памяти, например x * y + 4. Если диалоговое окно инициализируется из текстовой об- ласти, то вы можете воспринять запись, нажав клавишу Enter, либо изменить ее или ввести что-то совсем другое. Enter inspect start index, range (Введите первый индекс для проверки, диапазон) Введите индекс первого элемента массива, который вы хотите просмотреть. За индексом укажите число просматриваемых элементов массива (разделив их пробелом или запятой). Enter instruction to assemble (Введите инструкцию для ассемблирования) Введите инструкцию Ассемблера для замены инструкции по теку- щему адресу в области кода. Список инструкций и ключевых слов Ас- семблера содержится в одном из приложений. Более подробно о языке Ассемблера рассказывается в Главе 12. Enter log file name (Введите имя файла регистрации) Введите имя файла, в который вы хотите записывать регистри- руемую информацию. Все строки регистрации в том виде, как они вы- водятся в соответствующем окне, будут записываться в указанный файл до выполнения команды Close (Закрыть). По умолчанию файл бу- дет иметь расширение .LOG и имя, совпадающее с именем отлаживае- мой программы. Для этого можно просто нажать клавишу Enter. В противном случае наберите новое имя. Enter memory adress, count (Введите адрес в памяти, счетчик) Введите один адрес в памяти, за которым следует необязатель- ные запятая и число элементов, которые вы хотите очистить. Можно использовать имя идентификатора или полное выражение. Enter name оf configuration file (Введите имя файла конфигурации) Введите имя файла конфигурации для чтения или записи. При чтении из файла можно вводить трафаретные символы (маску) и полу- чить список соответствующих им файлов для выбора. Enter name of file to view (Введите имя файла для просмотра) Для получения списка файлов для выбора можно использовать трафаретные символы DOS (* и ?), либо ввести для загрузки имя конкретного файла. Enter new bytes (Введите новые байты) Введите список байт, которые заменят байты в позиции файла, отмеченной курсором. Полное описание списка байт содержится в Главе 9. Enter a new coprocessor register value (Введите новое значение регистра сопроцессора) Введите новое значение для текущего (подсвеченного) регистра арифметического сопроцессора. Для генерации нового значения можно ввести полное выражение. Оно будет преобразовано в правильный формат с плавающей точкой и загружено в регистр. Enter new data bytes (Введите новые байты данных) Введите байтовый список в позиции сегмента, отмеченных кур- сором. Полное описание списка байт содержится в Главе 9. Enter new directory (Введите новый каталог) Введите новое имя каталога или диска, которые должны стать текущими. Enter new file offset (Введите новое смещение в файле) Вы просматриваете файл на диске в шестнадцатиричном виде. Если вы вводите номер строки, превышающий число строк в файле, то увидите последнюю строку в файле. Строки нумеруются с 1. Текущий номер строки, где расположен курсор, соответствует первой строке в окне Module (Модуль). Enter new line number (Введите номер новой строки) Введите номер строки, которую вы хотите просмотреть в теку- щем модуле. Если этот номер превышает число строк в файле, то вы- ведется последняя строка файла. Номера строк начинаются с 1 (пер- вая строка файла. Текущая строка, на которой позиционирован курсор, выводится в качестве первой строки окна Module. Enter new relocation segment value (Введите новое значение перемещаемого сегмента) Введите выражение на текущем языке. Оно будет использовано для задания адреса базового сегмента таблицы идентификаторов, ко- торую вы загрузили с помощью команды File│Symbol Load (Файл│Заг- рузка таблицы идентификаторов). При вычислении вводимого выраже- ния должно получаться значение номера сегмента в начале кода, для которого вы загружаете таблицу идентификаторов. Enter new selector (Введите новый селектор) Введите значение селектора, который вы хотите сделать теку- щим. Вы можете ввести фактическое шестнадцатиричное значение или значение сегментного регистра (CS, DS или ES). Enter new value (Введите новое значение) Введите новое значение для текущего (подсвеченного) регистра ЦП. Для форматирования нового значение можно ввести полное выра- жение. Enter port number (Введите номер порта) Введите номер порта ввода-вывода, из которого нужно выпол- нить чтение. Допустимые номера - от 0 до 65535. Enter port number, value to output (Введите номер порта и значение для вывода) Введите номер порта ввода-вывода, в который нужно выполнить запись, и значение для записи, разделив эти два выражения запя- той. Допустимые номера - от 0 до 65535. Enter program name to load (Введите имя программы для загрузки) Введите имя отлаживаемой программы. Для получения списка файлов для выбора можно использовать трафаретные символы DOS, ли- бо ввести имя конкретного файла для загрузки. Если вы не указыва- ете расширения, подразумевается расширение .EXE (выполняемый файл). Enter read file name (Введите имя файла для чтения) Введите имя файла или спецификацию с использованием трафа- ретных символов, который вы хотите считать в память. Если вы вве- дете трафаретную спецификацию или по умолчанию используете *.*, то выведется список файлов для выбора. Enter search bytes (Введите байты для поиска) Введите список байт для поиска, начиная с текущей позиции в памяти, отмеченной курсором. Подробнее о списках байт рассказыва- ется в Главе 9. Enter search instruction or bytes (Введите инструкцию или байты для поиска) Введите инструкцию (для команды локального меню Assemble) или байтовый список (для команды локального меню Search (Поиск) области данных). Enter search string (Введите строку для поиска) Введите символьную строку для поиска. Для выявления неточных соответствий можно использовать простые трафаретные символы (* - один или более символов, ? - один символ). Enter set breakpoint at code address (Введите адрес в программе для задания точки останова) Введите адрес программы, по которому вы хотите установить точку останова. Более подробно о вводе адресов рассказывается в Главе 9. Enter source address, destination, count (Введите исходный, целевой адрес и значение счетчика) Введите адрес блока, который вы хотите переместить, число перемещаемых байт и адрес, куда их нужно переместить. Все три вы- ражения разделяются запятыми. Enter source directory path (Введите маршрут исходных файлов) Введите список каталогов, разделив их точками с запятой. По- иск исходных файлов в этих каталогах будет выполняться в том по- рядке, как они указаны. Enter symbol table name (Введите имя таблицы идентификаторов) Введите имя таблицы идентификаторов для загрузки ее с диска. Обычно эти файлы имеют расширение .TDS. Расширение имени файла нужно указывать явно. Enter tab column spacing (Введите размер табуляции) Введите число от 1 до 32, которое задает позицию табуляции при выводе Турбо отладчиком файлов в окне File (Файл) или Module (Модуль). Enter valiable to inspect (Введите переменную для проверки) Введите имя переменной или выражение, содержимое которого вы хотите проверить. Если подсказка инициализируется из области текста, то вы можете использовать выведенное имя, нажав клавишу Enter, или полностью набрать новую запись. Enter variable to inspect (Введите переменную для проверки) Введите имя переменной или выражение, содержимое которого вы хотите проверить в качестве массива. Если подсказка инициализиру- ет из области текста, то вы можете использовать выведенное имя, нажав клавишу Enter, или полностью набрать новую запись. Enter write file name (Введите имя файла для записи) Введите имя файла, в которых вы хотите записать блок памяти. Overwrite__? (Затереть?) Вы задали имя файла, который уже существует. Вы можете зате- реть старое содержимое этого файла, заменив его новым, либо отме- нить данную команду и оставить старое содержимое без изменений. Overwrite existing macro or selected key? (Перезаписать существующую макрокоманду или выбранную клави- шу?) Вы нажали клавишу для записи макрокоманды, а ей уже присвое- на макрокоманда. Если вы хотите отменить существующую макрокоман- ду, нажмите Y (Да). Для отмены команды нажмите N (Нет). Pick a method name (Выбор имени метода) Вы задали имя подпрограммы, которая ссылается более чем на один метод в объекте. Выберите корректный метод из списка имен. Pick a module (Выбрать модуль) Выберите имя модуля, который вы хотите просмотреть в окне Module (Модуль). Вам будет выведен список всех модулей программы. Для просмотра файла, который не является модулем программы, ис- пользуйте команду меню View│File (Обзор│Файл). Pick a name (Выберите имя) Выверите имя из списка выведенных на экран идентификаторов. Вы можете начать ввод имени и автоматически позиционироваться на первый символ, соответствующий тому, что вы уже набрали. Pick a source file (Выберите исходный файл) Выберите исходный файл из выведенного списка (выводятся только исходные файлы, входящие в текущий программный модуль). Pick a window (Выберите окно) Выберите окно из списка заголовков активных окон. Pick macro to delete (Выберите макрокоманду для удаления) Выберите клавишу или сочетание клавиш макрокоманды, которую вы ходите удалить. Клавиша получит первоначальное функциональное значение (которое было до макрокоманды). Press key to assign macro to (Нажмите клавишу, которой будет присвоена макрокоманда) Нажмите клавишу, которой вы хотите присвоить макрокоманду. Затем нажмите клавиши для формирования последовательности команд, которую вы хотите присвоить данной клавише. Эта последователь- ность будет выполняться в том виде, как вы ее введете. Для завер- шения последовательности и записи макрокоманды нажмите клавишу, которой вы присваиваете макрокоманду. Данная макрокоманда будет записана на диске наряду с другими клавиатурными макрокомандами. Program already terminated; reload? (Программа завершила работу. Перезагрузить?) Вы пытаетесь запустить или выполнить шаг программы, когда она уже завершила работу. Если вы ответите Y (Да), программа бу- дет перезагружена. Если вы ответите N (Нет) она перезагружена не будет, и выполнять ее нельзя. Program out of date on remote; send over link? (На удаленной системе находится старая версия программы. Пе- редать ее по линии связи?) Вы запустили Турбо отладчик с удаленной связью, а программа, которую вы хотите отладить, либо отсутствует на удаленной систе- ме, либо там находится более старая ее версия, чем на основной системе. Если вы ответите Y (Да), программа будет передана по ли- нии связи. При ответе N (Нет) вы выйдите из команды. При работе медленной скоростью обмена вы можете предпочесть перенос програм- мы через гибкий диск. При максимальной скорости обмена время пе- редачи эквивалентно времени записи на гибкий диск. Reload program so arguments take effect? (Перезагрузить программу, чтобы начали действовать аргументы командной строки?) Вы изменили для отлаживаемой программы аргументы командной строки. Если вы ответите положительно, ваша программа перезагру- зится и вернется в началу. Обычно это желательно делать после из- менения аргументов, так как программы, написанные с использовани- ем компиляторов фирмы Borland, считывают аргументы только один раз при загрузке программы. Все последующие изменения аргументов не окажут влияния на программу, пока вы ее не перезапустите. Ошибки ───────────────────────────────────────────────────────────────── Турбо отладчик использует сообщения об ошибках, чтобы сооб- щить вам о непредвиденных ситуациях. Иногда введенная вами коман- да не может быть обработана, в других случаях сообщения уведомля- ет вас, что что-то происходит не так, как вы ожидаете. Обычно вывод сообщений об ошибке сопровождается звуковым сигналом. Вы можете выключить его, используя командную строку DOS при запуске Турбо отладчика, или сделать это с помощью программы установки TDINST. Фатальные ошибки ───────────────────────────────────────────────────────────────── Все фатальные ошибки приводят к выходу из отладчика и возв- рату в DOS. Некоторые такие ошибки являются результатом запуска отладчика из среды DOS. В других случаях они могут возникать при появлении неисправимых ситуаций в системе во время использования отладчика. В любом случае ситуацию можно исправить только устра- нением причины сбоя и перезапуском отладчика. Bad configuration file (Плохой файл конфигурации) Файл конфигурации либо запорчен, либо не является файлом конфигурации Турбо отладчика, либо относится к его другой версии. Could not create dummy PSP segment (Невозможно создать пустой префикс программного сегмента) При запуске виртуального отладчика TD386 и отсутствия загру- женной программы пустая программа выполняться не может. Попробуй- те запустить его с программой для загрузки. Fatal EMS error (Фатальная ошибка EMS) Драйвер памяти EMS (расширитель памяти) возвращает состояние невосстановимой ошибки. Аппаратура EMS неверно функционирует, ли- бо повреждено программное обеспечение драйвера. Перезагрузите систему и повторите попытку. Если ситуация сохраняется, проверьте аппаратуру EMS. Invalid switch:___ (Недопустимый параметр) В командной строке DOS вы указали недопустимый параметр-пе- реключатель. Список всех возможных параметров содержится в соот- ветствующем приложении, а подробно о них рассказывается в одной из глав данного руководства. Not enough memory (Недостаточно памяти) Турбо отладчик при обработке вашей команды превысил границы рабочей памяти. Old configuration file (Старый файл конфигурации) Вы пытаетесь запустить Турбо отладчик с файлом конфигурации из предыдущей версии. Для данной версии Турбо отладчика нужно создать новый файл конфигурации. Remote link timeout (Тайм-аут удаленной связи) Нарушена связь с удаленной системой. Попытайтесь перезагру- зить обе системы и начните снова. Если ситуация сохраняется, об- ратитесь к главе, где рассказывается об удаленной отладке. Unsupported video adapter (Неподдерживаемый тип видеоадаптера) Турбо отладчик не может определить, какой тип видеоадаптера вы используете. Поддерживаются следующие типы адаптеров: MDA, CGA, EGA, VGA, MCGA, Hercules, Compaq composite, AT&T и совмести- мые с ними. Wrong version of remote driver (Неверная версия утилиты удаленного драйвера) На удаленной системе работает несовместимая версия утилиты TDREMOTE или WREMOTE. Нужно использовать одну версию Турбо отлад- чика и программ TDREMOTE или WREMOTE. Сообщения об ошибках ───────────────────────────────────────────────────────────────── ')' expected (Нужна закрывающая круглая скобка ')') При вычислении выражения обнаружено, что пропущена закрываю- щая скобка. Это происходит, если правильно сформированное выраже- ние начинается с левой квадратной скобки и не заканчивается пра- вой (закрывающей) скобкой, например: 3 * (7 + 4 вместо 3 * (7 + 4) ':' expected (Нужно двоеточие) При вычислении выражения языка Си был обнаружен символ ?, разделяющий первые два выражения тернарной операции ?:, однако соответствующего двоеточия не найдено. Например: x < 0 ? 4 6 Следует записать: x < 0 ? 4 : 6 ']' expected (Нужна закрывающая квадратная скобка ']') При вычисления выражения была обнаружена открывающая квад- ратная скобка индексного выражения массива без соответствующей закрывающей скобки. Например: table[4 вместо table[4] Эта ошибка может возникать также при вводе инструкций встро- енного Ассемблера (когда в скобках при обращении к памяти указы- вается базовый или индексный регистр). Например: mov ax,4[si вместо mov ax,4[si] Already logging to a file (Файл регистрации уже открыт) Вы дали команду Open log file при уже открытом файле регист- рации, который не был еще закрыт командой Close log file. Если вы хотите открыть другой файл регистрации, закройте сначала текущий. Ambiguous symbol name (Неоднозначное имя идентификатора) Вы ввели в выражении имя идентификатора, которое не иденти- фицирует уникальным образом метод в языке С++ или объект в Паска- ле. При этом вы не выбираете из списка корректное имя. Перед вы- числением выражения вам нужно выбрать корректное имя из выводимо- го списка. Bad or mission configuration file name (Неверное или пропущенное имя файла конфигурации) В параметре командной строки -с при запуске Турбо отладчика вы задали неверное имя файла конфигурации. Cannot access an inactive scope (Доступ к неактивной области действия не разрешается) В окне Module вы ввели выражение или указатель на перемен- ную, которая не находится в активной функции. Переменные в неак- тивных функциях имеют неопределенное значение, поэтому вы не мо- жете использовать их в выражениях или просматривать их значения. Cannot be changed (Этот идентификатор изменить нельзя) Вы пытаетесь изменить идентификатор, который изменить нель- зя. Непосредственно изменять можно только скаляры (типы int, long и т.д. в языке Си, integer, longint и строки в Паскале) и указа- тели. Если вы хотите изменить структуру или массив, нужно изме- нять каждый их элемент отдельно. Can't do this when Turbo Debugger is resident (Когда Турбо отладчик загружен резидентно, сделать это не- возможно) Вы пытаетесь выполнить операцию, такую как File│Load (Файл│Загрузка или Run│Program Reset (Выполнение│Сброс програм- мы), что невозможно при резидентной загрузке Турбо отладчика. Can't do this when user program is resident (Когда программа пользователя загружена резидентно, сделать это невозможно) Вы пытаетесь выполнить операцию, такую Run│Program Reset (Выполнение│Сброс программы), что невозможно, когда отлаживаемая вами программа стала резидентной. Can't execute DOS command processor (Невозможно выполнить командный процессор DOS) Не хватает памяти для выполнения командного процессора DOS, либо он не найден. Убедитесь, что переменная операционной среды COMSPEC правильно определяет, где можно найти командный процессор DOS. Can't go resident until user program terminates (Пока программа пользователя не завершит работу, резидентная загрузка невозможна) Вы пытаетесь сделать Турбо отладчик резидентным до того, как отлаживаемая вами программа сама стала резидентной. Турбо отлад- чик может стать резидентным только тогда, когда программа не заг- ружена или когда загруженная программа выполнена и завершила ра- боту. Can't set a breakpoint at this address (По этому адресу нельзя задать точку останова) Вы пытаетесь установить точку останова в области ПЗУ, в не- существующей памяти или в сегменте 0. Просмотреть программу, вы- полняющуюся в ПЗУ, можно только с помощью команды Run│Trace (Вы- полнение│Трассировка) и отработке инструкций по шагам. Can't set any more hardware breakpoints (Нельзя больше установить аппаратные точки останова) Вы не можете установить еще одну аппаратную точку останова, не удалив предварительно уже имеющуюся. В различных аппаратных отладчиках поддерживается разное число и типы точек останова. Can't set hardware condition on this breakpoint (Для данной точки останова нельзя установить аппаратное ус- ловие) Вы пытаетесь установить аппаратное условие срабатывания точки останова, которая не является глобальной. Такие условия можно за- давать только для глобальных точек останова. Can't have more then one segment override (Более одного переопределения сегмента не допускается) Вы пытаетесь ассемблировать инструкцию, в которой оба опе- ранда имеют переопределение сегмента. Иметь переопределение сег- мента может только один операнд, например: mov es:[bx],ds:1 а следует записать: mov es:[bx],1 или mov ax,[1] mov es:[bx],ax Can't set a breakpoint at this location (Точку останова по этому адресу установить нельзя) Вы пытаетесь установить точку останова в ПЗУ, несуществующей памяти или в сегменте 0. Единственный способ просмотреть програм- му, выполняющуюся в ПЗУ - это использование команды Run│Trace Into (Выполнение│Трассировка вглубь) для наблюдения по одной инс- трукции. Can't set that sort of hardware breakpoint (Аппаратную точку останова данного типа установить нельзя) Драйвер устройства, установленный в файле CONFIG.SYS, не мо- жет работать с точкой останова с таким сочетанием типа цикла, сравнения с адресом или данными, которые вы задали. Can't set hardware condition on this breakpoint (Для данной точки останова нельзя установить аппаратное ус- ловие) Вы пытаетесь задать аппаратное условие для точки останова, которая не является глобальной. Аппаратные условия можно устанав- ливать только для глобальных точек останова. Can't swap user program to disk (Невозможно сбросить программу пользователя на диск) Вы дали команду, в которой требуется, чтобы отлаживаемая программы была записана на диск, но не текущем диске для этого не хватает места. Нужно освободить достаточно места на диске. Сброс программы на диск требуется при выполнении команды меню File│OS Shell (Файл│Командный процессор операционной системы) или команды Edit (Редактирование) области текста. Constructors and destructors cannot be called (Вызов конструкторов и деструкторов не допускается) Если вы пытаетесь отлаживать программу, которая использует эти объекты, то выводится сообщение об ошибке. Возможно вы пытае- тесь вычислить метод объекта, являющийся конструктором или дест- руктором. Это не допускается. Count value too large (Значение счетчика слишком велико) В области данных в окне CPU в одной из локальных команд ра- боты с блоками вы ввели слишком большую длину блока. Размер блока не может превышать FFFFFh. Ctlr-Alt-SysRq interrupt. System crash possible. Continue? (Прерывание по Ctrl-Alt-Sysrq. Возможен сбой системы. Про- должить?) Вы пытаетесь выйти из TDW или перезагрузить свою прикладную программу во время приостановки программы по нажатию клавиш Ctrl- Alt-SysRq. Поскольку в момент приостановки программы выполнялся код ядра Windows, выход из TDW или перезагрузка прикладной прог- раммы будет иметь непредсказуемые результаты (наиболее вероятно "зависание" системы, после чего потребуется последующая перезаг- рузка). Если это возможно, установите в программе точку останова, которая приведет к выходу в TDW, а затем снова запустите вашу программу. Когда программа обнаруживает точку останова и выходит в TDW, вы можете завершить работу TDW или перезагрузить програм- му. Destination too far away (Целевой адрес слишком далеко) Вы пытаетесь ассемблировать инструкцию условного перехода, целевой адрес которой отстоит слишком далеко от текущего адреса. Целевой адрес инструкции условного перехода должен находиться в пределах -128 и +127 байт от самой инструкции. Divide by zero (Деление на 0) В выражениях с операциями деления (/, div) или операциями mod и % правая часть выражения при вычислении становится равной 0. Поскольку в этом случае операции будут иметь неопределенное значение, выводится сообщение об ошибке.