gpt4 book ai didi

c - 区别软件和硬件观察点

转载 作者:行者123 更新时间:2023-12-02 20:31:05 26 4
gpt4 key购买 nike

阅读时this documentation ,

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

但是,我在观察点的文档中读到“GDB 通过单步执行程序并每次测试变量的值来执行软件观察点”,根据我的理解,这基本上是硬件观察点的定义。

有人对软件和硬件观察点之间的区别有更好的理解吗?

最佳答案

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

硬件 观察点将要观察的内存字地址放入特殊调试寄存器中。 CPU 检查每个内存写入,看它是否以寄存器中的地址为目标,如果是,它会中断被测程序并将控制权返回给调试器。被测程序不必单步运行,因此速度要快得多,但这些特殊调试寄存器通常只有少数几个,因此您一次只能有一个或两个硬件观察点。

您可能对此感到困惑,因为“每次控制权返回调试器时单步执行程序并检查[某事]”听起来与您听到的硬件断点的描述相似,其中CPU 检查每个取指令是否到达断点地址。但是对于硬件断点,是 CPU 进行检查,而不是调试器,这要快几个数量级。硬件观察点也是如此。

关于c - 区别软件和硬件观察点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com