Окно Stack
Это окно позволяет проанализировать стек вызова и вывести в
удобном для чтения формате все активные функции и значения аргументов. Окно Stack вы можете создать с помощью команды View Stack. В окне стека выводится список всех активных процедур и
функций. Первой в списке указывается последняя вызванная процедуры, за которой следует вызвавшая ее процедура и предыдущая процедура, и так до самой первой функции программы (функция main в
Си). Это окно выводит также имена функций-элементов, перед которой указывается имя класса. При рекурсивном вызове окно Stack содержит несколько экземпляров функции.
[*] Stack 3 [^][v]
TCDEMO.PROCESSLINE.ISLETTER('A')
TCDEMO.PROCESSLINE('ABCDEF')
< >
SpeedMenu окна Stack содержит две команды: Ispect и Locals.
Команда Inspect открывает окно Module и позиционирует курсор на
активную строку подсвеченной функции. Если подсвеченная функция
находится в вершине стека вызова (последняя вызванная функция),
то в окне Module показывается положение счетчика команд. В противном случае курсор позиционируется на строку после вызова соответствующей функции. Вызвать эту команду можно также нажатием Enter после подстветки нужной функции. Команда Locals открывает окно Variables с идентификаторами, локальными для текущего модуля и
подсвеченной функции.
Команда Evaluate/Modify
Эта команда меню Data открывает диалоговое, которое содержит
текст по текущей позиции курсора или выражение, выбранное с помощью Ins и стрелок, затем вычисляет его (если вы выберите кнопку
Eval) так же, как это сделал бы компилятор. Результат помещается
в поле Result.
[*] Evaluate/Modify
Expression Eval
thisShape[CurrentPoint]
CurrentShape == LINE
HIWORD<lParam>
Cancel
Result
struct SSHAPE <<113,116,0,0>,5,1,0,0> Help
New value Modify
<not avaliable>
Диалоговое окно содержит три поля:
- В поле ввода Expression вы можете ввести выражение для вычисления. После содержит протокол всех введенных выражений.
- В средней области выводится результат вычисления вашего
выражения. Если строки данных слишком велики и не умещаются в поле результата, то они заканчиваются символом >. "Прокрутив" окно вправо, вы можете просмотреть остаток
строки.
- Нижняя область New Value - это область ввода, в которой вы
можете ввести новое выражение для вычисления. Если выражение модифицировать нельзя, то в данной области выводится сообщение <not avaliable>.
Запись в поле ввода New Value (Новое значение) будет действовать, если вы выберите кнопку Modify. Если вы выполняете отладку объектно-ориентированных программ C++, то окно Evaluate/Modify позволяет вам также вывести поля объекта или элементы экземпляра класса. Для каждого элемента, который может использоваться при вычислении записи, можно использовать спецификатор формата.
Команда Function Returns
По команде Function Returns выводится возвращаемое текущей
функцией значение. Используйте эту команду только тогда, когда
функция собирается передать значение в вызывающую программу.
Возвращаемое значение выводится в окне Inspector (Проверка), поэтому вы легко можете просмотреть значения, представляющие собой
указатели на сложные объекты данных. Данная команда позволяет вам
не переходить в окно CPU, когда требуется просмотреть возвращаемое через регистры процессора значение.
Вычисление выражений
Выражение - это последовательность идентификаторов программы, констант и операций языка, при вычислении которого получается
значение. Оно должно соответствовать синтаксису и правилам выбранного языка.
Механизм вычисления выражений Turbo Debugger
При вводе выражения в отладчике оно передается механизму вычисления выражения, который проверяет синтаксис и вычисляет значения идентификаторов, возвращая вычисленное значение. Чтобы задать механизм вычисления выражений, выберите команду Options Language, которая открывает диалоговое окно Expression Language. Это
окно содержит кнопки с зависимой фиксацией Source, C, Pascal и
Assembler, задающие язык для вычисления выражений. Кнопка Source
определяет вычисления в соответствие с исходным языком. В большинстве случаев Turbo Debugger поддерживает полный синтаксис указанных языков.
Типы выражений
Вы можете использовать выражения для доступа к значением
идентификаторов программы, вычисления значений и изменения значений элементов данных. Допускается задавать шестнадцатиричные значения, адреса памяти, строки программы, байтовые списки и вызовы
функций. Формат записи шестнадцатиричного значения зависит от
выбранного механизма вычисления:
Язык | 16-разрядный | 32-разрядный
|
---|
C | 0xnnnn | 0xnnnnnnnn
| Pascal | $nnnn | $nnnnnnnn
| Assembler | 0nnnn | 0nnnnnnnn
|
При отладке 16-битового кода для задания адреса памяти вы
можете использовать обозначение "сегмент:смещение", например:
Язык | Формат | Пример
|
---|
C | Oxnnnn | Ox1234:Ox0010
| Pascal | $nnnn | $1234:0010
| Assembler | nnnnh | 1234h:0B234h
|
Чтобы задать номер строки программы, перед десятичным номером строки укажите символ #. Можно задавать также байтовые списки:
Язык | Список | Данные
|
---|
C | 1234"AB" | 34 12 41 42
| Pascal | "ab"0x04"c" | 61 62 04 63
| Assembler | 'ab'$04'c' | 61 62 04 63
|
Функции из выражений вызываются также, как в исходном коде.
Это позволяет быстро проверить поведение функции.
Выражения с побочными эффектами
Побочный эффект означает изменение при вычислении выражения
элемента данных. Это мощный инструмент отладки. Побочные эффекты
имеют выражения с операциями присваивания (=, += и др.) и выражения с операциями ++ и --.
Спецификаторы формата
Чтобы изменить используемый по умолчанию формат вывода, укажите после выражение запятую и один из спецификаторов:
Спецификатор | Формат
|
---|
c | Символ или строка выводятся на экран в виде необработанных символов. Обычно непечатаемые символы выводятся в виде управляющих символов или в числовом формате. Этот параметр приводит к тому, что при выводе символов будет использоваться полный набор символов дисплея IBM.
| d | Целое число выводится в виде десятичного значения.
| f[#] | Формат с плавающей точкой с заданным числом цифр.
Если вы не задаете число цифр, то используется столько цифр, сколько необходимо.
| m | Выражение со ссылкой на память выводится в виде
шестнадцатиричных байт.
| md | Выражение со ссылкой на память выводится в виде
десятичных байт.
| P | Выводится необработанное значение указателя, показывающее сегмент, как имя регистра (если это возможно). Показывается также объект, на который указатель ссылается. Если управление форматом не задано, то это используется по умолчанию.
| s | Выводится массив или указатель на массив символов
(строка, заключенная в кавычки). Строка завершается нулевым символом.
| x или h | Целое выводится в виде шестнадцатиричного значения.
|
Если спецификатор формата не применим к типу данных выражения, он игнорируется. Вы можете задать таким же образом счетчик
повторения (он указывает, что выражение относится к повторяющемуся элементу данных, например, массиву).
Переопределение области действия
Область действия идентификатора - это та область программы,
в которой на него можно ссылаться. Заданные в выражении идентификаторы Turbo Debugger ищет в следующем порядке:
- идентификаторы в стеке текущей функции;
- идентификаторы в модуле, содержащем текущую функцию;
- глобальные идентификаторы (вся программа);
- глобальные идентификаторы в DLL, начиная с первой загруженной DLL.
Для определения области действия идентификатора отладчик использует текущую позицию курсора. Если вы измените в отладчике
область действия, это может дать непредсказуемые результаты, поэтому для возврата к текущей точке используйте команду Origin окна Module.
Синтаксис переопределения области действия зависит от выбранного в окне Options Language языка. В Си, С++ и ассемблере для
этого используется символ #, в Pascal - точка. Таким образом, для
переопределения области действия используется следующий синтаксис
(в квадратные скобки заключены необязательные элементы):
[#модуль[#имя_файла]]#номер_строки[#номер_переменной]
или
[#модуль[#имя_файла]][#имя_функции]#имя_переменной
Просмотр и модификация файлов
Turbo Debugger предусматривает два способа просмотра файлов
на диске: окно Module и окно File. Окно Module чаще всего используется в отладчике. Его можно применять для просмотра исходного
кода выполняемого модуля, скомпилированного с отладочной информацией. Строка заголовка этого окна показывает имя текущего загруженного модуля, имя текущего исходного файла и номер строки курсора. Выполняемая строка в этом окне помечается символом точки
(.), а стрелка (>) в первой позиции показывает указатель команд.
Он всегда отмечает следующий выполняемый оператор. При загрузке
программы в отладчик окно Module загружается автоматически
При выполнении программы по шагам окно Module автоматически
показывает исходный код, соответствующий выполняемой инструкции.
Перемещаясь по исходному коду, вы можете установить точки останова и задать отслеживаемые выражения, а также проверить значения
переменных. Если в строке заголовка выводится opt, то программа
оптимизирована компилятором. Это может затруднить поиск переменных. Если файл модифицирован после последней компиляции, то в заголовке выводится modified. Это может привести к несоответствию
строк исходного текста. Перекомпилируйте программу.
Команды меню окна Module
Меню SpeedMenu окна Module содержит команды, позволяющие перемещаться по исходному тексту, выбирать и просматривать элементы
данных и загружать новые исходные файлы. В TD32 это меню содержит
дополнительные команды Thread и Edit.
Inspect
|
Открывает окно Inspector с подробной информацией о переменной программы в позиции курсора (если курсор не установлен на переменной, выводится подсказка). Для быстрого перемещения и выбора
выражений в окне Module используйте стрелки и клавишу Ins. После
выбора выражения активизируйте окно Inspector с помощью Ctrl+I.
| Watch
|
Добавляет переменную в текущей позиции курсора в окно Watch.
Включение переменной в окно Watches позволяет отслеживать ее значение при выполнении.
| Thread
|
Открывает диалоговое окно Pick a Thread, из которого вы можете выбрать для отслеживания конкретную нить программы.
| Module
|
Команда Module (F3) позволяет выбрать в диалоговом окне Load
Module Source or DLL и загрузить в отладчик другой модуль.
| File
|
Позволяет просмотреть другой исходный файл, входящий в состав данного модуля. Открывает диалоговое окно Pick a Source File
с перечнем исходных файлов, содержащихся в выполняемом коде. При
выборе нового файла он заменяет в окне Module текущий. Чтобы
просматривать их одновременно, используйте команду View Another Module.
| Previous
|
Возвращает вас к тому месту исходного кода, которое вы просматривали перед сменой позиции.
| Line
|
Позиционирует вас на новую строку с указанным номером, который задается в выводимом диалоговом окне Enter New Line Number.
| Search
|
Ищет заданную строку символов, начиная с текущей позиции
курсора. Строка задается в выводимом диалоговом окне Enter Search
String. Если курсор позиционирован на имени переменной, то окно
инициализируется этим именем. Чтобы инициализировать окно Search
String, вы можете также выделить с помощью Ins и стрелок блок
файла. В строке поиска можно задавать трафаретные символы * и ?.
| Next
|
Ищет следующий экземпляр заданной в команде Search строки.
| Origin
|
Позиционирует курсор на модули и строку, соответствующую текущей инструкции. Ее полезно использовать для возврата в исходное
место.
| Goto
|
Открывает окно Enter Address to Position To, в котором можете ввести любой адрес программы, который хотите просмотреть (в
виде имени процедуры или в шестнадцатиричном виде). Это окно выводится также при наборе в окне Module.
| Edit
|
При отладке программ Windows 32s с помощью TD32 с помощью
этой команды вы можете вызвать выбранный редактор. Это полезно
использовать для коррекции исходного кода перед выходом из отладчика. Вызов редактора требует настройки конфигурации с помощью
TDINST32.EXE (команда Options Directories).
| Exceptions
|
Если вы реализовали на Си или С++ обработку исключительных
ситуаций, то доступна эта команда. Подробнее о ней рассказывается
ниже.
|
Просмотр других файлов
Для просмотра любого файла на диске, включая двоичные и
текстовые, используйте окно File. При выборе в строке меню команды View File отладчик выводит диалоговое окно Enter Name of File.
Вы можете задать в нем трафаретные символы или конкретное имя
файла. В зависимости от содержимого файла в открываемом окне File
файлы выводятся в текстовом или шестнадцатиричном виде.
Команды окна File
Команды SpeedMenu окна File можно использовать для перемещения по файлу и изменения формата вывода.
Goto
|
Позиционирует вывод на новую строку (при просмотре текстового файла) или смещение в файле (при шестнадцатиричном выводе).
| Search
|
Ищет строку символов, начиная с текущей позиции курсора. Для
ввода строки выводится окно Enter Search String. При шестнадцатиричном выводе можно задать список байт (в соответствии с используемым языком). Допускаются трафаретные символы (* и ?).
| Next
|
Ищет следующий экземпляр строки, заданной в команде поиска.
| Display As
|
Переключает вывод между текстовым и шестнадцатиричным форматом.
| File
|
Позволяет сменить файл, выводимый в окне File. Окно File не
дублируется. Чтобы просматривать два файла одновременно, выберите
команду View Another File.
| Edit
|
Эквивалентна соответствующей команде окна Module.
|
Отладка на уровне ассемблера
При отладке программы на языке высокого уровня обычно достаточно отладки на уровне исходного кода. Однако иногда может потребоваться проанализировать программу глубже.
Окно CPU
Это окно открывается командой View CPU строки меню и использует различные области для описания состояния вашей программы на
нижнем уровне. Его можно использовать для
- просмотра машинного кода и дизассемблированных инструкций
программы;
- проверки и модификации байт структур данных программы;
- тестирования исправления ошибок с помощью встроенного ассемблера в области кода.
область регистров
область кода область стека
[*] CPU 80486 3 [^][ ]
TCDEMO.120: Inc(NumLines); ^ ax 0004 c=0
cs:04C4:4F36063000 inc word ptr [TPDEMO bx 3EEE z=0
TCDEMO.121 i := 1; cx 0000 s=0
cs:04C8 C:43FE0100 word ptr [bp+02].000 dx 5920 o=0
TCDEMO.122: while i <= Length(S) do si 3CEC p=0
cs:04C0 C47ED4 les di,[bp+04] bp 3EF4 a=0
cs:0400 288A05 mov al,es:[di] sp 3EF4 i=1
cs:0403 3D84 xor ah,ah ds 5920 d=0
cs:0405 3B48FE cmp ax,[bp+02] es 5920
cs:0408 7D03 jnl TPDEMO.125 (04DD) ss 595A
cs:040A 898A00 jmp TPDEMO.148 cs 548A
TCDEMO.125 while (i <= Length(S)) and notv ip 04C8
< >
ds:0008 5A 5D 5A 5D 5A 5D 00 00 Э^$< < ss:3EF2 548A
ds:0010 00 00 00 00 00 00 5A 5D 6D vЖ ss:3EF0>04C1
ds:0018 00 00 5A 5D 00 00 00 90 7 ss:3EEE 0246
область дампа область стека
Область кода показывает машинный код и дизассемблированные
машинные инструкции вашей программы. Здесь могут также выводиться
строки исходного кода. В области регистров выводится содержимое
регистров ЦП. В области флагов показывается состояние 8 флагов
процессора. В области дампа выводится шестнадцатиричный дамп любой области памяти, доступной для программы. Область стека показывает шестнадцатиричное содержимое стека программы. Область селекторов доступна только для TDW и показывает все селекторы Windows.
Для адресных ссылок вне текущего сегмента в окне CPU выводятся знаки вопроса. Клавиша Ctrl в сочетании со стрелками позволяет сдвигать вывод на 1 байт. При выполнении кода Windows, модуля без отладочной информации, остановке программы на инструкции
внутри строки исходного кода или при трассировке инструкций с помощью Alt+F7 окно CPU выводится автоматически.
Область кода
В левой части области кода выводятся адреса дизассемблированных инструкций. Для 16-разрядного кода они имеют вид "сегмент:смещение", а для 32-разрядного это 32-разрядные адреса. Стрелка (>) справа от адреса памяти указывает текущий адрес программы (следующую выполняемую инструкцию). Справа выводится шестнадцатиричный машинный код с соответствующей дизассемблированной
инструкцией. Глобальные идентификаторы выводятся в виде имени,
статические - в виде имени модуля с символов # и именем идентификатора, а номера строк представлены как имя модуля, # и номер
строки. Клавиша F2 позволяет устанавливать/отменять точки останова.
Меню SpeedMenu области кода содержит команды, позволяющие
перемещаться по ней и ассемблировать вводимые инструкции. TDW
имеет дополнительную команду ввода-вывода, а TD32 - команды Threads и OS Exceptions.
Goto
|
Вам выводит окно Enter Address to Position To для ввода нового адреса, на который вы хотите перейти. Вы можете ввести адрес, выходящий за пределы программы, что позволяет проверить базовую систему ввода-вывода (BIOS), внутренние области DOS и Windows.
| Origin
|
Позиционирует вас на текущий адрес программы. Используется
для перемещения.
| Follow
|
Позиционирует область кода по целевому адресу текущей подсвеченной инструкции. Используется в сочетании с инструкциями передачи управления (CALL, JMP, INT) и условного перехода (JZ, JNE, LOOP и др.).
| Caller
|
Позиционирует вас на инструкцию, вызвавшую текущее прерывание или подпрограмму. Если текущая подпрограмма прерывания занесла данные в стек, то Turbo Debugger может не иметь возможности
определить, откуда она вызвана.
| Previous
|
Восстанавливает позицию области кода в соответствии с адресом, который был текущим перед последней командой, явно изменившей его значение. Использование клавиш перемещения на команду не влияет.
| Search
|
Позволяет вам вводить инструкцию или список байт, которые вы
хотите найти. Будьте внимательны при поиске инструкций. Следует
выполнять поиск только тех инструкций, которые не изменяют байт,
в которые они ассемблируются, в зависимости от того, где в памяти
они ассемблируются. Например, поиск следующих инструкций проблемы
не представляет:
PUSH DX
POP [DI+4]
ADD AX,100
а попытка поиска следующих инструкций может привести к непредсказуемым результатам:
JE 123
CALL MYFUNC
LOOP $-10
Вместо инструкции можно вводить также список байт.
| View Source
|
Для вывода исходного кода, соответствующего текущей дизассемблированной инструкции открывает окно Module. Если соответствующего исходного кода нет (например, вы находитесь в коде Windows, или отсутствует отладочная информация), вы просто остаетесь
в области кода.
| Mixed
|
Позволяет выбрать один из трех способов вывода на экран дизассемблированных инструкций и исходного кода:
| | No (Нет) | Исходный код не выводится, выводятся только дизассемблрованные инструкции.
| | Yes (Да) | Перед первой дизассемблированной инструкцией, со ответствующей данной строке, выводится строка исходного кода. Область устанавливается в данный режим, если исходный модуль написан на языке высокого уровня.
| | Both (Оба) | Для тех строк, которым соответствует исходный
код, дизассемблированные строки заменяются строками исходного текста. В противном случае выводятся дизассемблированные инструкции. Используйте
этот режим, когда вы отлаживаете модуль на ассемблере и хотите видеть строку исходного текста, а не соответствующую дизассемблированную инструкцию. Область устанавливается в данный режим вывода, если текущим модулем является исходный модуль
ассемблера.
| Thread
|
Позволяет выбрать нить, выполнение которой вы хотите отладить. Открывает диалоговое окно Pick a Thread, из которого вы можете выбрать конкретную нить программы.
| OS Exceptions
|
Позволяет выбрать исключительные ситуации операционной системы, которые вы хотите обрабатывать. Подробнее об этом рассказывается ниже.
| New EIP
|
Изменяет текущий адрес программы, подсвеченный в области кода (в TDW команда называется New CS:IP). При возобновлении выполнения программы оно начинается по этому адресу. Эта команда полезна, когда нужно пропустить некоторые машинные инструкции, но
использовать ее нужно аккуратно, так как она может вызвать нестабильность системы.
| Assemble
|
Ассемблирует инструкцию, заменяя инструкцию по текущему адресу. Используется для внесения в программу минимальных изменений. Команда выводит диалоговое окно Enter Instruction to Assemble, где вы можете ввести выражение для ассемблирования. Если вы
начнете набор в области кода, данная команда вызывается автоматически.
| I/O
|
Эта команда TDW считывает или записывает значения в пространство адресов ввода-вывода ЦП и позволяет вам проверить содержимое регистров ввода-вывода и записать в них значения. При этом выводится меню, показанное ниже:
| | In byte | Ввести байт из порта
| | Out byte | Вывести байт в порт
| | Read byte | Прочитать байт из порта
| | Write byte | Записать байт в порт
Учтите, что эти команды могут нарушить нормальную работу устройств.
|
Область регистров и флагов
В области регистров (верхняя область справа от области кода)
выводится содержимое регистров процессора. Вид этой области зависит от отладчика (TD32 или TDW). По умолчанию TDW выводит 13
16-разрядных регистров, а TD32 - всегда выводит 15 регистров процессора 80386 и старше.
С помощью команд SpeedMenu области регистров вы можете модифицировать или сбрасывать содержимое регистров. Команда Increment
добавляет 1 к текущему подсвеченному регистру, Decrement вычитает
1 из содержимого текущего подсвеченного регистр, а Change позволяет изменить содержимое регистра, выводя диалоговое окно Enter
New Value для ввода нового значения. Последняя команда вызывается
автоматически, если вы начинаете набор в области регистров.
Команда Registers 32-bit, доступная только в TDW, переключает вывод регистров с 16-битовых на 32-битовые (сегментные регистры остаются 16-битовыми).
Область флагов
В области флагов показано значение каждого флага ЦП. Список
различных флагов и то, как они выводятся в области флагов, показан в следующей таблице:
Буква в области Название флага
c Флаг переноса
z Флаг нуля
s Флаг знака
o Флаг переполнения
p Флаг четности
a Флаг дополнитель-
ного переноса
i Флаг разрешения
прерывания
d флаг направления
|
SpeedMenu этой области содержит содержит команду Toggle, переключающую значение подсвеченного флага между 0 и 1.
Область дампа
В этой области выводится в шестнадцатиричном виде содержимое
области памяти. В левой части каждой строки показан адрес (в виде
"сегмент:смещение" или 32-разрядного адреса). Порядок регистров в
области Dump имеет вид: DS, ES, SS, CS. Справа от адреса выводятся значения элементов данных в выбранном формате.
SpeedMenu области Dump содержит команды для перемещения по
области, модификации содержимого, перемещению по указателям, задания формата вывода и работы с блоками памяти.
Goto
|
Выводит диалоговое окно Enter Address to Position To, где вы
можете ввести выражение, при вычислении которого получается адрес
памяти, доступный программе.
| Search
|
Ищет строку символов или список байт, начиная с адреса, указанного курсором.
| Next
|
Ищет следующий экземпляр элемента, заданного в команде поиска.
| Change
|
Позволяет модифицировать байты по текущему месту расположения курсора. При выводе в формате ASCII или шестнадцатиричном виде запрашивается список байт, в противном случае - элемент текущего формата вывода.
| Follow
|
Открывает меню с командами, позволяющими проверить данные по
адресам указателей near и far. TD32 содержит команды для 32-разрядной адресации.
Команда Near Code этого меню интерпретирует
слово под курсором в области данных, как смещение в текущем сегменте кода (как это задается регистром CS). Область кода становится текущей областью и позиционируется на данный адрес. Команда Far Code интерпретирует двойное слово под курсором в области данных, как адрес дальнего типа (сегмент и смещение). Область кода
становится текущей и позиционируется на данный адрес.
Команда Offset to Data позволяет вам следовать по цепочке указателей размером в слово (ближнего типа, где используется только смещение).
Область данных устанавливается в соответствии со смещением, заданным словом в памяти по текущей позиции курсора.
Команда Segment:Offset to Data позволяет следовать по цепочке указателей дальнего типа размером в двойное слово (где используется сегмент
и смещение). Область данных устанавливается в соответствии со
смещением, заданным двойным словом в памяти по текущей позиции
курсора.
Команда Base Segment:0 to Data команда интерпретирует
слово под курсором, как адрес сегмента, и позиционирует область
данных на начало сегмента.
| Previous
|
Восстанавливает адрес области данных в адрес, который был до
последней команды, явно изменившей значение текущего адреса. Использование клавиш стрелок и клавиш перемещения курсора не приводит к запоминанию позиции. Отладчик поддерживает стек из пяти
последних адресов, поэтому вы можете вернуться назад после многократного (< 5) использования команд локального меню Follow, или команды Goto.
| Display As
|
Позволяет выбирать формат вывода в области данных. Вы можете
выбирать один из форматов данных, использующихся в языке Си, Pascal или ассемблер. Эти форматы можно выбрать из меню. Команда Byte устанавливает область данных в режим вывода шестнадцатиричных
байтовых данных. Word устанавливает область данных в режим вывода
шестнадцатиричных слов. Long задает режим вывода длинных шестнадцатиричных целых чисел. Comp устанавливает режим вывода 8-байтовых целых чисел. Выводится десятичное значение числа. Float устанавливает режим вывода 6-байтовых чисел с плавающей точкой. Выводится значение числа с плавающей точкой в научном представлении.
Double выводит 8-байтовые числа с плавающей точкой. Выводится
значение числа в научном представлении. Extended устанавливает
режим вывода 10-байтовых чисел с плавающей точкой в научном
представлении.
| Block
|
Позволяет работать с блоками памяти. Вы можете перемещать,
очищать, присваивать значения блокам памяти, а также записывать и
считывать блоки памяти из файлов на диске. По данной команде на
экран выводится всплывающее меню. Команда Clear этого меню устанавливает непрерывный блок в памяти в значение 0. Адрес блока и
число байт, которые требуется очистить, запрашиваются в выводимой
подсказке. Move копирует блок памяти из одного адреса в другой.
Адреса исходного и целевого блока, а также число копируемых байт,
будут запрашиваться в подсказке. Set присваивает непрерывному
блоку в памяти конкретное байтовое значение. Адрес блока, число
байт, которым требуется присвоить значение, а также само значение
запрашиваются в подсказке. Read считывает все содержимое или
часть файла в блок памяти. Вам выводится подсказка для ввода имени считываемого файла, затем адреса, куда требуется считать информацию, и числа считываемых байт. Write записывает блок памяти
в файл. Выводится подсказка для ввода имени файла, куда требуется
записать данные, затем блока памяти, который нужно записать, и
число считываемых байт.
|
Область стека
Эта область показывает шестнадцатиричное содержимое программного стека. Текущий указатель стека отмечается указателем >.
SpeedMenu этой области содержит команды Goto, Origin, Follow,
Previous и Change, аналогичные описанным выше командам.
Область селектора
В этой области (только для TDW) выводится список селекторов
защищенного режима и указывается некоторая информация для каждого
из них. Селектор может быть допустимым или нет. Допустимый селектор указывает на ячейку таблицы дескрипторов защищенного режима,
соответствующего адресу памяти. Если селектор недопустим, то он
не используется. Для допустимого селектора в области выводится
следующее:
- являются ли содержимым данные или код;
- загружена ли область памяти, на которую ссылается селектор
(присутствует в памяти) или разгружена (выведена на диск);
- длина сегмента памяти, на которую ссылается селектор (в
байтах).
Если селектор ссылается на сегмент данных, то имеется дополнительная информация по полномочиям доступа (Read/Write - Чтение/
Запись или Read only - только чтение) и направление расширения
сегмента в памяти (Up - вверх или Down - вниз).
Локальное меню области можно использовать для перехода к новому селектору или просмотра содержимого подсвеченного. В зависимости от характера данных, содержимое выводится в области кода или области дампа.
Команда Selector выводит подсказку для ввода селектора, который нужно вывести в области. Для ввода селектора вы можете использовать полный синтаксис выражений. Если вы вводите числовое значение, то TDW подразумевает, что оно десятичное (если вы не
используете синтаксис текущего языка для указания того, что значение является шестнадцатиричным).
Другим методом ввода значения селектора является вывод окна
CPU и проверка содержимого сегментных регистров. Если регистр содержит интересующий вас селектор, то вы можете ввести имя регистра с предшествующим символом подчеркивания (_). Например, вы можете задать имя сегментного регистра данных, как _DS.
Команда Examine выводит содержимое области памяти, на которую ссылается текущий селектор, и переключается в область, где
выводится содержимое. Если селектор указывает на сегмент кода, то
содержимое выводится в области кода. Если содержимое представляет
собой данные, то оно выводится в области данных.
Окно Dump
В этом окне выводится в непосредственном виде дамп любой области памяти. Оно работает так же, как область данных окна CPU.
[*] Dump 3 [^][v]
ds:0000 CD 20 00 A0 00 9A F0 FE = & U** ^
ds:0008 1B 02 B2 01 22 31 7C 01 <.^% .`
ds:0010 22 31 88 02 52 2B E2 1D * X 4-#
ds:0018 01 01 01 00 03 FF FF FF v
< >
С помощью команды View Another Dump вы можете одновременно
открыть несколько окон Dump.
Окно Registers
В окне Registers выводится содержимое регистров и флагов
центрального процессора. оно работает, как сочетание областей регистров и флагов в окне CPU и имеет те же команды.
Назад | Содержание | Вперед
|
|