这里以英特尔IA结构CPU为例,其提供的调试支持有:
1. IN3指令:又叫断点指令,当CPU执行到该指令时会产生断点异常,以便中断到调试器程序。它是软件断点的实现基础。
2. 标志寄存器EFLAGS中的TF标志: 陷阱标志位,当为1时,CPU每执行完一条指令就产生调试异常,它是单步执行的实现基础。
3. 调试寄存器DR0-DR7:用于设置硬件断点和报告调试异常的细节。
4. 断点异常(#BP):当INT3指令执行时,回导致此异常,CPU转到该异常的处理例程。异常处理例程进一步将异常分发给调试器软件。
5. 调试异常(#DB): 当除INT3指令以外的调试事件发生时,会导致此异常。
6. 任务状态段TSS的T标志:任务陷阱标志,当切换到设置了T标志的任务时,CPU回产生异常,中断到调试器。
7.分支记录机制:用来记录上一个分支,中断和异常的地址等信息
8. 性能监视:用于监视和优化CPU及软件的执行效率
9. JTAG支持:可以与JTAG调试器一起工作来调试单独靠软件调试器无法调试的问题。
除了对调试功能的直接支持,CPU的很多核心机制也为实现调试功能提供了硬件基础,比如异常机制,保护模式和性能监视功能等。