首页 > 解决方案 > 在 GDB 中设置观察点

问题描述

有没有办法为特定变量设置观察点,但只观察它的值是否在特定函数中发生变化?我有缩小变量值的函数,所以只想“观察”它在函数中的值,而不是仅仅做

(gdb) watch <variable-name>

因为这将需要更长的时间才能运行。

标签: gdbwatch

解决方案


我有缩小变量值的函数,所以只想“观察”它在函数中的值,而不仅仅是做watch <variable-name>.

如果您在具有硬件观察点支持的系统上,并且变量是全局的,那么仅在感兴趣的函数中观察变量没有任何优势——观察点没有开销,所以您不妨将其保留在地方。

但是让我们假设变量不是全局变量,或者您的平台只有软件观察点(非常慢)。

在这种情况下,您要做的是在感兴趣的函数的入口和返回时设置断点(请参阅此答案)。

有了这些断点后,将命令附加到它们。入口断点命令将设置一个观察点,返回断点将删除它。


推荐阅读