Man*_*ish 4 debugging gdb watchpoint
我正在操作一个庞大的代码库,并希望监视一个特定变量的值(它深埋在其中一个文件中),特别是当它被设置为零时.
1)变量不属于全局范围.有没有比首先将断点设置到定义它的函数更好的选项,然后设置观察点?
2)在1中尝试选项之后,我看到一段时间后它会被删除,并说它的帧外使用了它.这种方式会增加程序的繁琐程度,因为我必须一次又一次地添加它?任何变通方法?
3)有没有办法检查,即观察特定变量是否等于0(或任何特定常数)?
想要监视特定变量的值
通常这不是最好的方法,特别是在大型代码库中.
您真正想要做的是理解不变量,并声明它们在进入和退出代码的各个部分时都是正确的.
1)变量不属于全局范围.有没有比首先将断点设置到定义它的函数更好的选项,然后设置观察点?
对于自动(堆栈)变量,您必须位于变量为"活动"的范围内.
您可以做的是在某条线上设置断点,并将命令附加到将自动设置观察点的断点,例如
(gdb) break foo.c:123
(gdb) commands 1
silent
watch some_local
continue
end
Run Code Online (Sandbox Code Playgroud)
3)有没有办法检查,即观察特定变量是否等于0
你不能用观察点做到这一点,但你可以使用条件断点:
(gdb) break foo.c:234 if some_local == 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |