GDB观察点实施

时间:2014-04-16 17:46:05

标签: gdb gdbserver watchpoint

我正在为ARM编写gdbstub,我有一个问题。我试图为我的存根实现观察点。 GDB具有针对不同类型的观察点(读取,写入,访问)的特殊数据包,但每次我将观察点设置为某些值时,我都会获得GDB实现 - 单步执行代码并比较每个步骤的值。它是在GDB文档中指定的,但为什么需要一个特殊的数据包来编写观察点?

显然,GDB本机实现很慢。可能需要此数据包来重新定义实现。例如,当我在addr设置wp而不是value时,实际发送了Z2数据包。但是我不明白GDB应该如何理解由于观察点而发送了" S05"(停止数据包)。

在断点中,决定当前bp_address与程序计数器值之间的比较。

如何使用观察点?

1 个答案:

答案 0 :(得分:0)

当我在x86-64 linux机器上尝试使用gdbserver + gdb时,gdbserver回复了 T 数据包,其中表示" watch"作为停止原因:

  

收到的包:T05watch:000000000058c460; 06:00deffffff7f0000; 07:f0ddffffff7f0000; 10:9cd4410000000000; thread:p3425.3425; core:5;