Регистры отладки
Отладочные регистры появились в архитектуре микропроцессоров семейства Intel86, начиная с процессора 386. Эти регистры позволяют выставлять точки останова и перехватывать обращения процессора к памяти. В процессорах Pentium и выше можно останавливаться и по обращениям ко вводу-выводу.
(В свое время, в ЭВМ первого-второго и даже третьего поколений такие точки останова можно было задать на переключателях пульта оператора или системного инженера).
Отладочных регистров у процессора восемь: DR0...DR7.
Первые четыре регистра: DR0...DR3 используются для задания до четырех 32-разрядных адресов точек останова. Заданный адрес указывает байт, слово или двойное слово, попадание в который(ое) вызывает срабатывание ловушки останова. Что именно указывает адрес определяется полем LENi (i = 0...3) в регистре DB7. В этом же регистре, но только в поле RWi, задается тип перехватываемого обращения к памяти:
00 – выборка команды из памяти
01 – запись данных в память
10 – обращение к портам ввода-вывода (только для Pentium и выше при включении расширения отладки: бит DE регистра CR4)
11 – чтение или запись данных памяти.
Генерируемые при этом исключения различаются по типу. При выборке команды исключение классифицируется как отказ (fault) и обрабатывается до выполнения (этой выбираемой из памяти) команды. В случае обращения к данным исключение рассматривается как ловушка (trap) и обрабатывается после передачи (читаемых или записываемых) данных.
Для управления установкой отладочных точек используются два младших байта регистра DR7, биты которого имеют следующее назначение:
бит GD (Global Debug Register Access Detect – обнаружение доступа к регистрам отладки), доступный только в реальном режиме или в защищенном режиме на уровне привилегии CPL = 0, позволяет отслеживать любые обращения к отладочным регистрам. При GD = 1 любая попытка обращения вызовет исключение 1 (отказ);
биты GE и LE (Global и Local Exact data breakpoint match – глобальная и локальная точка немедленного останова по совпадению данных) определяют будет ли исключение генерироваться сразу после завершения операции обмена при включенной ловушке на обращение к данным или оно произойдет несколько позже (возможно, никогда). Ловушка на обращения за командами срабатывает всегда сразу. Бит LE автоматически сбрасывается при переключении задач, бит GE не изменяет своего состояния при таких переключениях;
биты Gi и Li (Global и Local breakpoint enable – разрешение глобальной и локальной точек прерывания) разрешают срабатывание ловушек по отладочным точкам. Биты Li автоматически сбрасываются при переключении задач, биты Gi не изменяют своего состояния при таких переключениях. Автоматический сброс битов Li блокирует лишние срабатывания отладочных точек при переключениях задач.
Для упрощения определения отладчиком причины, вызвавшей срабатывание отладочной точки (исключение 1), могут использоваться биты регистра состояния отладки DR6 (Debug Status Register), идентифицирующие эти причины:
биты Bi – срабатывание точки останова по регистру DRi
бит BS – ловушка пошагового режима
бит BT – ловушка переключения задач (по биту T в TSS)
бит BD – отказ при попытке доступа к регистрам отладки при GD = 1
Значения флагов Bi действительны только для контрольных точек с установленными битами Li и/или Gi.
Генерация исключений по контрольным точкам может быть отключена флагом RF регистра флагов процессора.
Одним из мощных отладчиков, позволяющих работать с точками прерывания, управляемыми по аналогичной схеме, является отладчик SoftICE фирмы NuMega.
- Средства тестирования и отладки пэвм
- Программные средства отладки
- Команда прерывания
- Пошаговый режим
- Регистры отладки
- Аппаратные средства отладки
- Режим системного управления smm
- Режим виртуального процессора 8086 (v86)
- Распределение областей системной памяти ([5], с.39)
- Пространство ввода-вывода (адреса компонентов системной платы) ([5], с.49)
- Автоматическое распределение системных ресурсов (Первоначальный заголовок – Спецификация Plug&Play для шины isa) ([5], с.69)
- Системный порт, таймер и динамик (компоненты системной платы) ([5], с.81)
- Интерфейс и контроллер клавиатуры ([5], с.85)
- Кмоп память и часы реального времени (cmos Memory и rtc – Real Time Clock)([5], с.89)
- Цифровой аудиоканал ([5], с.107)
- Rom bios.Тест начального включения([5], с.С.111,148)
- Rom bios.Конфигурирование пэвм –bios Setup([5], с.156)
- Адресация информации на жестких дисках и их разделы ([5], с.553)
- Блок питания пэвм ([5], с.783)
- Заземление пэвм ([5], с.769)