Re: seeking open source examples of GDB scripting

Simon Marchi via Gdb <[email protected]> Mon, 26 Jan 2026 11:52:28 -0500
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 1/18/26 2:01 PM, Basile Starynkevitch wrote:
> Hello all,
> 
> I am seeking open source examples (or tutorials, given that I am unfamiliar with Python) of GDB scripting.
> 
> Since I have a naughty bug : https://github.com/RefPerSys/RefPerSys/issues/30
> 
> The scripting could be in GNU guile (I much prefer that language).

I'm sure there are good examples of real-world scripting out there, on
github or otherwise, but I don't have good examples in mind.  The Guile
API is unfortunately not as maintained as the Python one, so it's
missing features compared to the Python one.  And even the Python API is
missing some key things, people just add whatever they need.

> For example, I would like to automatically add a breakpoint to every line calling the RPS_POSSIBLE_BREAKPOINT() macro
> That macro is nearly a no-op one defined in https://github.com/RefPerSys/RefPerSys/blob/19f01d3783c9f727980f21fc2c66db4837745b61/refpersys.hh#L1335

I don't think it's possible for GDB by itself to figure out the "call
sites" of a macro.

But you could perhaps modify your RPS_POSSIBLE_BREAKPOINT_AT macro to
include a call to a dummy/empty function, and put a breakpoint on that.
That wouldn't require using the Python or Guile API.

Otherwise, I see that your macro defines some symbols of the form:

  "__" RPS_BASENAME "_brk_" #Lin

You could try the rbreak command to try to put a breakpoint on all
symbols matching a given regex pattern.  But that only works if the
symbol is visible to gdb, I'm not sure it will be.  You might need to
make it ".global", I don't know.

Simon