分类: 系统运维
2009-03-21 21:29:01
调试器控制被调试程序的能力主要是依靠硬件支持和操作系统的调试机制。调试器需要最少三种的硬件功能的支持:
1. 提供设置断点的方法;
2. 通知操作系统发生中断或者陷阱的功能;
3. 当中断或者陷阱发生时,直接读写寄存器,包括程序计数器。
通用的硬件调试机制
1. 断点支持
断点功能是通过特定的指令来实现的。对于变长指令的处理器,断点指令通常是最短的指令,下图给出了四个处理器的断点指令:
断点操作算法:
2. 单步调试支持
单步调试是指执行一条指令就产生一次中断,是用户可以查找每条指令的执行状态。一般的处理器都提供一个模式位来实现单步调试功能。
3. 错误检测支持
错误检测功能是指当操作系统检测到错误发生时,他通知调试器被它调试的程序发生了错误。
4. 检测点支持
用来查看被调试程序的地址空间(数据空间)。
5. 多线程支持
6. 多处理器支持
例子:Intel x86
x86处理器的特性:
l 变长指令
l 三中处理器模式(貌似现在不止了):实模式,保护模式,虚拟8086模式
l 灵活的地址方式:16位和32位
l 断点指令:int 3
l 调试寄存器
l 单步调试状态位(TF: trap flag)
l 栈的实现: