Helpful Features in a Debugger

Maciej W. Rozycki macro at
Tue Feb 23 17:09:15 CST 2016

On Mon, 22 Feb 2016, Mouse wrote:

> These and many of the other stop conditions could possibly be subsumed
> by a "stop when this expression evaluates true" facility, with
> expression primitives capable of representing all the things you might
> want to watch.  It would of course be CPU-intensive if the expression
> is complicated, but that's unavoidable, and I have occasionally wished
> for "run until this number is greater than that number plus twice this
> register" or the like, even if it runs multiple orders of magnitude
> slower.  (Not when running under RT-11, but that's mostly because I
> have done little-to-no work under RT-11 at all.)

 This is exactly how GDB's watchpoint facility works BTW.  Except from the 
very simple case of watching a memory location, which in some processors 
can be delegated to a hardware watchpoint facility, GDB implements this by 
single-stepping the debuggee repeatedly, which of course hits performance 
enormously.  Then, whether through single-stepping or as a result of a 
hardware watchpoint hit, it stops the debuggee and returns control to the 
user whenever the watchpoint condition evaluates to true.  Any expression 
valid in the high-level language chosen for debugging (which is usually 
the same as one the debuggee has been compiled from) can be used as a 
condition, also for breakpoints, and you can refer to hardware registers, 
which are presented as special variables (side effects work too!).

 As a matter of interest some embedded MIPS processors have more complex 
hardware watchpoint support in which certain conditions can actually be 
presented to hardware as a chain of prerequisites for a watchpoint hit.  
This facility is available for JTAG debugging only and support has never 
been implemented in GDB, although JTAG debugging itself is supported in 
GDB with the use of a suitable remote debug stub (or more precisely GDB 
does not care what it talks to as long as it speaks GDB's language, aka 
Remote Serial Protocol).



More information about the cctech mailing list