Команда установки режима индикации
Синтаксис:
S-|+|&
Команда S устанавливает режим выдачи на дисплей, которому SYMEB будет в дальнейшем придерживаться.
По командеS+ SYMDEB будет выдавать на экран информацию в терминах линий исходного текста программы. КомандаS- устанавливает режим выдачи реассемблированного кода программы. Команда S&обеспечивает обе эти функции. Первоначальным умалчиваемым режимом является S&.
Команда S имеет смысл лишь при работе с программами на языке высокого уровня. Для ассемблерных программ автоматически устанавливается режим S-.
Если символьный план не открыт или не содержит информацию о линиях исходной программы, SYMDEB игнорирует все последующие запросы на выдачу исходных линий. В режиме S& SYMDEB выдает исходную линию, содержащую инструкцию, на которую указывает пара регистров CS и IP.
Команда S оказывает влияние на работу последующих команд реассемблирования U.
Команда S влияет также на работу команд R, T и Р. В режиме S+ эти команды выдают за раз одну исходную линию, которая может соответствовать нескольким реассемблированным инструкциям. В режиме S- выдается только реассемблированный код. В режиме S& выдаются реассемблированный код и номера линий.
Исходные линии выдаются в виде:
<номер линии>: <исходный текст>
Исходные линии при выдаче предшествуют реассемблированным инструкциям.
Всякий раз, когда SYMDEB первый раз обращается к исходному тексту, он ищет в текущем подоглавлении файл с тем же базовым именем, что и соответствующий символьный файл. При неудачном поиске SYMDEB выдает на консоль запрос об имени исходного файла. Если в ответ на него нажать клавишу ENTER, не указав имени, SYMDEB подавит выдачу исходных линий, вместо которых тогда будут выдаваться имя плана и номер линии. Эту процедуру нужно производить при работе с программами, сформированными ранними версиями (до 3.31) компиляторов FORTRAN и PASCAL.
Временный выход в DOS
Синтаксис:
! [<команда DOS>]
Команда !позволяет выполнить COMMAND.COM и команды MS-DOS вне SYMDEB. COMMAND.COM выполняется без аргументов с сохранением контекста отладки. Для возврата в SYMDEB служит команда MS-DOS EXIT.
Если в команде! задана команда DOS, производится выполнение этой команды и автоматический возврат в SYMDEB.
Использование команды ! требует дополнительной памяти. Для более экономного использования памяти рекомендуется предусматривать в ассемблерных программах вызов DOS с функцией 4Ah, который освободит неиспользуемую память. Тот же эффект дает опция LINK /CPARMAXALLOC. Программы на языке C, обработанные компилятором MICROSOFT C версии 3.0 и выше, освобождают ненужную память автоматически, если была выполнена процедура _main. SYMDEB также освобождает неиспользуемую им память.
В команде! не может быть использован ограничитель ;, так как весь текст после ! передается в COMMAND.COM и будет интерпретироваться как командная строка DOS.
Для размещения копии COMMAND.COM SYMDEB использует переменную COMSPEC команды DOS SET.
Команда выдачи кода исходной линии
Синтаксис:
.
По этой команде выдается код исходной линии невзирая на режим, установленный командой S.
Команда не может быть использована при работе с ассемблерными программами.
Команда трассировки стека
Синтаксис:
K [<число>]
Эта команда позволяет увидеть текущий кадр стека. Первая строка трассы содержит имя текущей процедуры, ее аргументы, имя файла и номер линии, вызвавшей процедуру. Следующая строка описывает вызвавшую процедуру. Если число аргументов процедуры переменно или неизвестно, SYMDEB использует специфицированное в команде K число, которое задает число слов параметров.
Команда Kработает только при соблюдении стандартных соглашений о связях, в противном случае она игнорируется.
Команда установки символа
Синтаксис:
Z <символ> <значение>
В результате выполнения команды Z указанный символ будет связан со специфицированным значением адресом.
T-трассировка
Синтаксис:
T [=<адрес начала>] [<счетчик>]
КомандаT выполняет задаваемую адресом инструкцию и затем выдает на дисплей в формате команды Rтекущее содержимое всех регистров и флагов.
Если <адрес> опущен, выполняется инструкция по адресу, определяемому регистрами CS и IP.
Счетчик, если он присутствует, задает число инструкций, которые будут выполнены до останова. Выдача регистров и флагов при этом будет осуществляться после выполнения каждой инструкции до начала выполнения следующей.
В отличие от P-трассировки T-трассировка не прекращается при вызове процедуры или прерывании. Исключение составляет лишь прерывание с номером 21h (функция DOS).
Трассировка будет идти лучше, если не использовались средства оптимизации данного языка.
С помощью команды T можно трассировать инструкцию в ROM (read-only memory).
Формат и объем выдаваемой информации существенно зависит от режима, установленного командой S.
Команда реассемблирования
Синтаксис:
U [<границы>]
По команде U на дисплей выдаются реассемблированные инструкции и/или предложения исходной программы. Формат вывода зависит от режима, установленного командой S, и от языка, на котором была написана программа. Если отлаживаемая программа была обработана MASM или несовместимым с SYMDEB компилятором, принудительно устанавливается режим S-. В режимахS+ и S& при работе с программами, выработанными совместимыми с SYMDEB компиляторами, по команде U выдаются линии исходного текста и реассемблированные инструкции (одна исходная линия для каждой соответствующей группы предложений Ассемблера). Исходные линии считываются из исходного файла. Инструкции для реассемблирования берутся из блока памяти в указанных в команде границах.
В отличие от команд T и P, для команды U режимы S+ и S& совпадают. Для обоих режимов (исходного и смешанного) SYMDEB требует, чтобы вместе с программой был загружен и символьный план, содержащий информацию о номерах строк исходной программы. При отсутствии этой информации исходные линии не выдаются.
Если <границы> опущены, обрабатываются первые 8 линий кода по текущему адресу реассемблирования. Текущим адресом реассемблирования является адрес первого байта (линии) после последнего байта (линии), выданного предыдущей командой U. Защищенные инструкции процессора 80286 не могут быть реассемблированы.