下列处理器组件支持调试和性能监控:
- Debug exception (#DB):当一个调试事件发生时,程序控制权转移到调试程序或任务。
- Breakpoint exception (#BP):见下面的断点指令(INT3)。
- Breakpoint-address registers (DR0 through DR3):指定最多四个断点的地址。
- Debug status register (DR6):报告产生调试或断点异常时的条件。
- Debug control register (DR7):指定产生断点的内存或I/O访问的形式。
- T (trap) flag, TSS:当试图切换到一个在其TSS中设置了T标志的任务时,产生一个调试异常(#DB)。
- RF (resume) flag, EFLAGS register:抑制同一指令的多个异常。
- TF (trap) flag, EFLAGS register:每次执行指令后产生一个调试异常(#DB)。
- Breakpoint instruction (INT3):产生一个将程序控制权转移到调试程序或任务的断点异常(#BP)。该指令是设置指令断点的另一种方式。当需要四个以上的断点时,或者在源代码中设置断点时,它特别有用。
- Last branch recording facilities:在最后一个分支记录(LBR)堆栈MSR中存储最近采取的分支、中断或MSR中异常的分支记录。一个分支记录由一个`branch-from`和一个`branch-to`指令地址组成。将分支记录作为分支跟踪信息(BTM)发送到系统总线上。
这些组件允许调试器作为一个单独的任务或作为当前程序或任务的上下文中的一个程序被调用。调用调试器的情况如下:
- 切换到一个特定的任务。
- 执行断点上的指令。
- 执行任何指令。
- 在一个指定的地址执行指令。
- 读取或写入一个指定的内存地址/范围。
- 写入一个指定的内存地址/范围。
- 从一个指定的I/O地址/范围输入。
- 输出到一个指定的I/O地址/范围。
- 试图改变一个调试寄存器的内容。