【问题标题】:GDB watchpoint implementationGDB 观察点实现
【发布时间】:2014-04-16 17:46:04
【问题描述】:

我正在为 ARM 编写 gdbstub,我有一个问题。我正在尝试为我的存根实现观察点。 GDB 为不同类型的观察点(读、写、访问)提供了特殊的数据包,但每次我在某些值上设置观察点时,我都会得到 GDB 实现——单步执行代码并比较每一步的值。它在 GDB 文档中指定,但是为什么您需要一个特殊的数据包来编写观察点呢?

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

在断点中,根据当前bp_address 和程序计数器值之间的比较来做出决定。

它如何与观察点一起工作?

【问题讨论】:

    标签: gdb gdbserver watchpoint


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多