16、调试器内部机制与实现

调试器内部机制与实现

1. 调试基础回顾

在之前的调试会话中,我们可以逐行执行高级语句并打印特定变量的值,这比通过解析寄存器和转储内存来推断程序状态信息要方便得多。

2. 自定义调试基础设施:DOS 调试

2.1 DOS 调试中断

所有商业操作系统都为调试提供了钩子,通常以系统调用的形式实现,用于访问内核中的调试设施。但 DOS 是个例外,作为实模式操作系统,由于不存在内存保护,几乎可以自行完成所有操作。

要实现一个最小的 DOS 调试器,只需为以下两条 Intel 机器指令实现中断服务例程(ISR):
- INT Ox3 :表示断点
- INT Ox1 :支持单步执行

当程序遇到 INT Ox3 指令时,处理器会自动定位中断向量表(IVT)中的第四个条目,该表位于内存底部,起始地址为 oxooooo 。每个中断表条目(向量)都有自己专门的 ISR,存储着其实模式段:偏移地址。

通常, INT Ox3 的 ISR 不做任何事情,只是一个占位例程。若要在遇到 INT Ox3 指令时执行特定操作,需要在 IVT 中注册自己的 ISR。

Intel 处理器有一个名为 FLAGS 的寄存器,其第九位是陷阱标志(TF)。当 TF 标志置为 1 时,处理器将执行一条指令,然后自动执行 INT Ox1 指令。同样,这会导致 IVT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值