【发布时间】:2011-03-29 02:16:38
【问题描述】:
An earlier question 解释说,在 x86 上,正在监视的对象的大小受调试寄存器的限制。正如所料,我可以“观察”一个双变量。但是我不能看双数据成员,例如,
watch pObject->dPrice
生产
Hardware watchpoint 1: pObject->dPrice
但是当你尝试继续执行时,它会说
无法插入硬件断点: 您可能请求了太多的硬件断点/观察点。
即使这是唯一断点/观察点。
我很好奇为什么会这样,但更重要的是有没有办法解决它?根据 GDB 文档,如果它不能使用硬件,它可能会使用软件观察点。在这种情况下,它不会尝试使用软件观察点——有没有办法强制它这样做?
【问题讨论】:
-
你能打印出那个成员变量的地址吗?我的怀疑是它被优化成一个寄存器。如果不是这样,它是否正确对齐?