- INT3指令:断点指令,当CPU执行到该指令时便会产生断点异常,以便中断到调试器程序。(INT3指令是 软件断点 的实现基础)
- 标志寄存器(FLAGS)中的TF标志:陷阱标志位,当该标志为1时,CPU每执行完一条指令就产生调试异常,陷阱标志位是 单步执行 的实现基础。
- 调试寄存器DR0~DR7:用于设置硬件断点和报告调试异常的细节。
- 断点异常(#BP):当INT3指令执行时,会导致该异常,CPU转到该异常的处理例程,异常处理例程会进一步将异常分发给调试器软件。
- 调试异常(#DP):当除INT3指令以外的调试事件发生时,会导致该异常。
- 任务状态段(TSS)的T标志:任务陷阱标志,当切换到设置T标志的任务时,CPU会产生调试异常,中断到调试器。
- 分支记录机制:用来记录上一个分支、中断和异常的地址等信息。
- 性能监视:用于监视和优化CPU及软件的执行效率。
- JTAG支持:可以与JTAG调试器一起工作来调试单独靠软件调试器无法调试的问题。
CPU基础
CPU操作模式:(IA-32处理器)
- 保护模式
为了实现多任务,保护多任务环境中的各个任务的安全。
对任务的保护机制分为:
任务内的保护(靠特权级别检查实现的),核心是权限控制
任务间的保护(靠虚拟内存映射机制实现的【包括段映射和页映射】) - 实地址模式(实模式)
- 虚拟8086模式
- 系统管理模式
- IA-32e模式
特权级:
IA-32处理器定义了4个特权级,又称为环(Ring),分别用0、1、2、3表示。0代表的特权最高,3代表的特权最低。
最高的特权级通常是分配给操作系统的内核代码和数据的(比如Windows操作系统的内核模块是在特权级0(Ring0)运行的);
Windows下的各种应用程序是在特权级3运行的。
因为特权级0下运行的通常都是内核模块,所以人们便把在特权级0运行说成内核模式(Kernel Mode)运行。
把特权级3运行说成在用户模式(User Mode)运行。