From: Doug Evans <xdje42@gmail.com>
To: Daniel Gutson <daniel.gutson@tallertechnologies.com>
Cc: gdb <gdb@sourceware.org>
Subject: Re: Breakpoint commands compiler
Date: Fri, 17 Oct 2014 16:57:00 -0000 [thread overview]
Message-ID: <CAP9bCMQbQbvkHnoDY6oJbMOMVLZSJoxoyJ3DaGahtm_xyqjoJQ@mail.gmail.com> (raw)
In-Reply-To: <CAF5HaEVWapj-ZVTshW7aGdjFhmMohZqw9dCezwTrxH__FSEkLg@mail.gmail.com>
On Fri, Oct 17, 2014 at 8:42 AM, Daniel Gutson
<daniel.gutson@tallertechnologies.com> wrote:
> Hi,
>
> gdb is sometimes used for changing the runtime behavior of a program.
> That is, suppose there is a program that has a bug,
> it is spotted with gdb, then I create a set of non-stopping breakpoints that
> "fix" the runtime behavior by altering memory and registers.
> It does work, but it's slow.
>
> I was thinking to start a project to add a "breakpoint commands compiler"
> to gdb, which basically generates C code from the breakpoint commands
> (one function per breakpoint),
> which in turns calls a C API (similar to the python api), invokes the compiler
> (user-specified), loads it as a shared object, and finally replaces the commands
> of the breakpoints by calls to the compiled breakpoint-functions.
>
> Any comment/suggestion? Would this be accepted within gdb?
Hi.
For reference sake a patch has been submitted by Red Hat to add a
"compile" command.
[The patch is still being reviewed, it hasn't been committed yet.]
It doesn't compile gdb commands, but allows one to add compiled code
to the inferior in the debugging session.
The problem with attaching this code to breakpoints is that
breakpoints are handled exterior to the program (the inferior gets,
e.g., a SIGTRAP and gdb processes the signal - the inferior never sees
it). If you wanted to add compiled code that ran when the breakpoint
was "hit" you'd need to solve this problem.
There are "agent expressions" which support a limited number of
gdb-like things and are compiled as bytecode.
They can even be run without communication with gdb when used with gdbserver.
There is even a jitter to support limited things like fast conditional
breakpoints.
Part of the gdb/gdbserver unification project is to add support for
agent expressions to gdb.
https://sourceware.org/gdb/wiki/LocalRemoteFeatureParity
But until then agent expressions are only supported by gdbserver.
Hope that helps.
I think a feature to compile gdb commands to C would not be accepted,
at least not in that form.
But limited extensions of the above features (and certainly assistence
with LocalRemoteFeatureParity) would be welcome.
next prev parent reply other threads:[~2014-10-17 16:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-17 15:42 Daniel Gutson
2014-10-17 16:12 ` Daniel Gutson
2014-10-17 16:57 ` Doug Evans [this message]
2014-10-17 17:38 ` Phil Muldoon
2014-10-17 17:39 ` Jan Kratochvil
2014-10-23 15:35 ` David Taylor
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=CAP9bCMQbQbvkHnoDY6oJbMOMVLZSJoxoyJ3DaGahtm_xyqjoJQ@mail.gmail.com \
--to=xdje42@gmail.com \
--cc=daniel.gutson@tallertechnologies.com \
--cc=gdb@sourceware.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