【发布时间】:2012-05-08 15:15:01
【问题描述】:
使用 GDB,我可以 watch i,在 i 更改时中断。问题是我有多个函数使用名称i,所以 GDB 中断了所有这些函数。
是否可以在 i 更改时中断,但仅限于给定函数内?
【问题讨论】:
-
请向我们展示您与 GDB 的互动记录。当我在函数内部
watch i时,GDB(正确)在我从该函数返回后立即删除观察点。
使用 GDB,我可以 watch i,在 i 更改时中断。问题是我有多个函数使用名称i,所以 GDB 中断了所有这些函数。
是否可以在 i 更改时中断,但仅限于给定函数内?
【问题讨论】:
watch i 时,GDB(正确)在我从该函数返回后立即删除观察点。
我猜你是 观察一个全局变量,因此它会在所有修改此变量的函数中停止这是合乎逻辑和预期的行为。如果您只想在i 更改时仅在给定函数内中断,请不要为i 设置断点。而是为所需的函数设置断点。当这个断点被命中时,now 设置i 的监视,以便您确定在所需函数中修改i 时将命中下一个断点(忽略可能的递归和喜欢)
我猜您可能不会在每个同名函数中查看局部变量,因为您不能在局部变量上设置断点,除非您处于该特定函数的范围内。 em>
【讨论】: