gdb requires watchpoints to fire after the write

Joel Brobecker brobecker@adacore.com
Wed Aug 29 15:47:00 GMT 2018


> I don't have experience with many different architectures, but as far as I
> know, the expectation of the GDB is that the watchpoint is reported after
> the write.  Otherwise it wouldn't need to save the value of the watched
> expression.  That's also how software watchpoints seem to work.
> 
> The easiest way to deal with this would be to match GDB's expectation.  But
> if you really prefer the behavior of reporting the watchpoint before the
> event, I suppose it's always possible to teach GDB about this, but it's a
> less trivial task.  Especially that when you GDB evaluates whether the watch
> expression has changed value, it would need to consider the not-yet-written
> value in memory.
> 
> I'm also curious to know if other architectures work in this way (report the
> event before the write actually take place).

I seem to remember some architectures having different behaviors,
and so we have a couple of entry points in GDB. For architecture-specific
settings, we have gdbarch_have_nonsteppable_watchpoint. For target-specific
settings, you would use target_have_steppable_watchpoint. (IIRC)

-- 
Joel



More information about the Gdb mailing list