From: Basile Starynkevitch <basile@starynkevitch.net>
To: Simon Marchi <simark@simark.ca>, Eli Zaretskii <eliz@gnu.org>
Cc: gdb@sourceware.org, team@refpersys.org
Subject: Re: GDB variants accepting plugins (to the debugger) ?
Date: Fri, 30 Jan 2026 18:03:26 +0100 [thread overview]
Message-ID: <e866a1d29cdf30c67aa83f67533f33129af2ce26.camel@starynkevitch.net> (raw)
In-Reply-To: <b8f96877-0698-42f8-9c6c-7b12e3971e4f@simark.ca>
On Fri, 2026-01-30 at 10:35 -0500, Simon Marchi via Gdb wrote:
>
>
> On 2026-01-30 08:33, Eli Zaretskii via Gdb wrote:
> > > From: Basile Starynkevitch <basile@starynkevitch.net>
> > > Cc: team@refpersys.org
> > > Date: Fri, 30 Jan 2026 14:13:51 +0100
> > >
> > > I am using GDB-17.1 on Linux/Debian/x86-64 to debug a C++ coded, GPL licensed, inference engine
> > >
> > >
> > > Is there any GDB variant accepting plugins to the debugger process
> > > (these could be definitely useful to display C++ data in a nice way, std::vector or std::map instances come to mind immediately).
> > >
> > > I do know that GDB accept eg Guile or Python scripts.
> > > But coding manually a Python or Guile function for every important C++ classes of a software is very time consuming
> >
> > Did you read the node "Auto-loading extensions" in the GDB manual?
> > GDB installs such an auto-loaded extension for standard C++ classes,
> > which actually uses printers.py provided by GCC/libstdc++
> > distribution. But you can use the same mechanism to provide
> > extensions for your classes, if needed.
>
> Here's the file Eli is referring to, for libstdc++:
>
> https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py;hb=HEAD
>
> And here is the API it uses:
>
> https://sourceware.org/gdb/current/onlinedocs/gdb.html/Pretty-Printing.html
>
> Simon
I am (perhaps incorrectly) understanding that I could inside the ELF executable embed some ELF section containing Python code for GDB.
https://sourceware.org/gdb/current/onlinedocs/gdb.html/dotdebug_005fgdb_005fscripts-section.html
mention something. I don't understand if the script file name should be an absolute path, or a relative one?
If the Python script is a relative path, is it relative the working directory of GDB or of the debugged process?
Does anyone has some concrete toy -preferably opensource- example (for an open source C++ program, on Linux, and how to link that program
to add the ELF sections containing Python code for the GDB debugger)?
Thanks
--
Basile STARYNKEVITCH basile AT starynkevitch DOT net
8 rue de la Faïencerie http://starynkevitch.net/Basile/
92340 Bourg-la-Reine https://github.com/bstarynk
France https://github.com/RefPerSys/RefPerSys
https://orcid.org/0000-0003-0908-5250
next prev parent reply other threads:[~2026-01-30 17:04 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-30 13:13 Basile Starynkevitch
2026-01-30 13:33 ` Eli Zaretskii via Gdb
2026-01-30 15:35 ` Simon Marchi via Gdb
2026-01-30 17:03 ` Basile Starynkevitch [this message]
2026-01-30 17:16 ` Simon Marchi via Gdb
2026-01-30 20:12 ` Tom Tromey
2026-01-31 2:36 ` Matt Rice via Gdb
2026-01-31 17:00 ` Tom Tromey
2026-02-02 13:49 ` Jan Vrany via Gdb
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e866a1d29cdf30c67aa83f67533f33129af2ce26.camel@starynkevitch.net \
--to=basile@starynkevitch.net \
--cc=eliz@gnu.org \
--cc=gdb@sourceware.org \
--cc=simark@simark.ca \
--cc=team@refpersys.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox