Files
oldlinux-files/Ref-docs/manual Intel386/I386Manual/S12_01.HTM
2024-02-19 00:21:47 -05:00

54 lines
3.0 KiB
HTML

<html><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>80386 Programmer's Reference Manual -- Section 12.1</title>
</head>
<body>
<b>up:</b> <a href="C12.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C12.HTM">Chapter 12 -- Debugging</a><br>
<b>prev:</b> <a href="C12.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C12.HTM">Chapter 12 -- Debugging</a><br>
<b>next:</b> <a href="S12_02.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/S12_02.HTM">12.2 Debug Registers</a>
<p>
<hr>
<p>
<h1>12.1 Debugging Features of the Architecture</h1>
The features of the 80386 architecture that support debugging include:
<dl>
<dt>Reserved debug interrupt vector
<dd>Permits processor to automatically invoke a debugger task or procedure when an event occurs that is of interest to the debugger.
<dt>Four debug address registers
<dd>Permit programmers to specify up to four addresses that the CPU will automatically monitor.
<dt>Debug control register
<dd>Allows programmers to selectively enable various debug conditions associated with the four debug addresses.
<dt>Debug status register
<dd>Helps debugger identify condition that caused debug exception.
<dt>Trap bit of TSS (T-bit)
<dd>Permits monitoring of task switches.
<dt>Resume flag (RF) of flags register
<dd>Allows an instruction to be restarted after a debug exception without immediately causing another debug exception due to the same condition.
<dt>Single-step flag (TF)
<dd>Allows complete monitoring of program flow by specifying whether the CPU should cause a debug exception with the execution of every instruction.
<dt>Breakpoint instruction
<dd>Permits debugger intervention at any point in program execution and aids debugging of debugger programs.
<dt>Reserved interrupt vector for breakpoint exception
<dd>Permits processor to automatically invoke a handler task or procedure upon encountering a breakpoint instruction.
</dl>
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:
<ul>
<li>Task switch to a specific task.
<li>Execution of the breakpoint instruction.
<li>Execution of every instruction.
<li>Execution of any instruction at a given address.
<li>Read or write of a byte, word, or doubleword at any specified address.
<li>Write to a byte, word, or doubleword at any specified address.
<li>Attempt to change a debug register.
</ul>
<p>
<hr>
<p><b>up:</b> <a href="C12.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C12.HTM">Chapter 12 -- Debugging</a><br>
<b>prev:</b> <a href="C12.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C12.HTM">Chapter 12 -- Debugging</a><br>
<b>next:</b> <a href="S12_02.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/S12_02.HTM">12.2 Debug Registers</a>
</body>