首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >差分软件和硬件监视点

差分软件和硬件监视点
EN

Stack Overflow用户
提问于 2018-02-08 22:14:49
回答 1查看 952关注 0票数 2

在阅读这份文件时,

我没有发现软件和硬件监视点之间的区别。我读到,软件断点(而不是观察点)用不正确的指令替换指令,以触发中断(然后停止程序),硬件断点将指令的地址放在寄存器中,并将其与每条执行的指令进行比较。

然而,我在观察点的文档中读到"GDB通过单步执行程序并每次测试变量的值来完成软件监视点“,这基本上是我所理解的硬件监视点的定义。

有人能更好地理解软件和硬件之间的区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 22:21:22

通过单步执行程序并在每次控件返回调试器时检查变量的值来实现软件监视点。这是非常慢的,因为它涉及多个上下文切换的每一条指令在被测试程序中执行。

硬件监视点将内存字的地址放在特殊的调试寄存器中监视。CPU检查每个内存写入是否针对寄存器中的地址,如果是的话,它会中断正在测试的程序并将控制返回到调试器。测试中的程序不需要单步执行,因此速度要快得多,但是通常只有几个特殊的调试寄存器,所以一次只能有一个或两个硬件监视点。

您可能对此感到困惑,因为“单步执行程序并在每次控件返回调试器时检查某些内容”听起来类似于您所听到的硬件断点的描述,其中CPU在每次获取指令时检查它是否已到达断点地址。但是,对于硬件断点,检查是CPU做的,而不是调试器,它比调试器快几个数量级。还有一个硬件监视点。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48695665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档