gdb watch 调试时,无法watch
来源:互联网 发布:网络诽谤案例 编辑:程序博客网 时间:2024/06/06 01:18
服务器实际运行时, 某个对象的某个变量不知道啥时候被改掉了。
用valgrind查了 ,没有内存越界, 那就是逻辑上有问题。
这种情况 gdb 的 watch功能就非常好用。 它能检测内存中的值被改了,就会自动断点。
现在能访问到这个变量的地方随便断个点, 断点后 watch一下这个变量地址中的内容。
但实际使用中 watch m_sid
结果 continue后 出现:
Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
查了一下资料,这个情况一般是局部变量 销毁了, 就自动不监控了。
但我这个变量是某个对象的属性成员啊? 奇怪。
不得已,换了一种方式:
1.先找出这个变量的地址
p &m_sid
$2 = (int32_t *) 0x74ed588
2. watch 这个地址指向的内容 (注意 不能 watch (int32_t *) 0x74ed588, 因为这个是内存地址,一般不会变。)
watch *(int32_t *) 0x74ed588
即可 找到 这个变量在哪个代码里被修改了。
0 0
- gdb watch 调试时,无法watch
- 有关gdb调试watch
- gdb 调试小记(关于watch)
- 使用gdb watch调试代码
- gdb watch
- gdb-watch
- gdb watch
- gdb watch
- watch
- watch
- $watch
- watch
- watch
- watch
- watch
- watch
- watch
- $watch
- (HDU 5742) It's All In The Mind <思维水题> 2016 Multi-University Training Contest 2
- JSON.prase()和 eval()区别
- 中值滤波四个角有一些像素是零的原因
- Python - yield
- 枚举
- gdb watch 调试时,无法watch
- Android事件分发机制
- 事件冒泡和默认行为阻止
- 大白话讲解Promise(一)
- PAT BASIC LEVEL 1007. 素数对猜想 (20)
- 每天一个 Linux 命令(16):which命令
- swift 商品排序
- cc2640到cc2640R2F
- 7、用两个栈实现队列