up: Chapter 12 -- Debugging
prev: Chapter 12 -- Debugging
next: 12.2 Debug Registers
12.1 Debugging Features of the Architecture
The features of the 80386 architecture that support debugging include:
- Reserved debug interrupt vector
- Permits processor to automatically invoke a debugger task or procedure when an event occurs that is of interest to the debugger.
- Four debug address registers
- Permit programmers to specify up to four addresses that the CPU will automatically monitor.
- Debug control register
- Allows programmers to selectively enable various debug conditions associated with the four debug addresses.
- Debug status register
- Helps debugger identify condition that caused debug exception.
- Trap bit of TSS (T-bit)
- Permits monitoring of task switches.
- Resume flag (RF) of flags register
- Allows an instruction to be restarted after a debug exception without immediately causing another debug exception due to the same condition.
- Single-step flag (TF)
- Allows complete monitoring of program flow by specifying whether the CPU should cause a debug exception with the execution of every instruction.
- Breakpoint instruction
- Permits debugger intervention at any point in program execution and aids debugging of debugger programs.
- Reserved interrupt vector for breakpoint exception
- Permits processor to automatically invoke a handler task or procedure upon encountering a breakpoint instruction.
These features make it possible to invoke a debugger that is either a separate task or a procedure in the context of the current task. The debugger can be invoked under any of the following kinds of conditions:
- Task switch to a specific task.
- Execution of the breakpoint instruction.
- Execution of every instruction.
- Execution of any instruction at a given address.
- Read or write of a byte, word, or doubleword at any specified address.
- Write to a byte, word, or doubleword at any specified address.
- Attempt to change a debug register.
up: Chapter 12 -- Debugging
prev: Chapter 12 -- Debugging
next: 12.2 Debug Registers