中断的应用--程序断点
1 断点的分类
断点分为程序断点和数据断点。
1.1 程序断点
程序断点就是指处理器的指令断点。通俗的说,就是当程序运行到某个函数的某个地方时就会停下来。程序断点又可以分为软件程序断点和硬件程序断点。
- 软件程序断点:处理器在运行的过程中如果遇到了一条非法或无效的指令,就会出现一个异常中断,软件程序断点就是利用这个特性实现的。当设置了一个软件程序断点时,调试工具就在我们所想设置的内存位置上放置一条非法的指令,同时将被替换的指令保留起来。当程序运行到了被非法指令替换的地方,处理器所产生的异常中断一方面在中断服务程序中恢复被替换的指令,另一方面将控制权交给调试工具。
- 硬件程序断点:硬件程序断点是通过配置处理器的断点寄存器的方式实现的。当处理器运行到断点寄存器所指示位置的指令时就会产生中断,调试工具通过中断是我们获得干预的机会。
1.2 数据断点
数据断点与硬件程序断点很相似,需要在处理器的寄存器中设置所监视数据变量的内存地址。当被监视的内存单元被修改时处理器将产生中断,调试工具利用这一中断让我们获得检查程序的机会。
2 中断的应用:程序断点
2.1 程序断点的基本概念
- 断点指的是调试工具用于暂停代码执行的指令位置
- 断点的实现原理为处理器的中断支持
- 软件断点:利用非法指令异常产生中断实现
- 硬件中断:利用中断寄存器的特性产生中断实现
2.2 程序断点的实现原理
- 获取原程序指定行对应的代码地址
- 把代码地址中的指令替换为中断触发指令
- 在中断服务程序中将控制权交给调试程序
- 调试程序读写源程序上下文信息
- 调试程序将代码地址中的指令还原
- 原程序从断点处继续向下执行
修改记录
时间 | 动作 |
---|---|
2017.5.25 | 首次上传 |
参考资料
唐老师 — 狄泰软件学院 — 十二月提升计划
李云 — 《专业嵌入式软件开发 全面走向高质量编程》