Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: Stan Shebs <stanshebs@earthlink.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] dynamic printf
Date: Thu, 08 Mar 2012 21:08:00 -0000	[thread overview]
Message-ID: <87ipien6me.fsf@fleche.redhat.com> (raw)
In-Reply-To: <4F4DCDD5.2040807@earthlink.net> (Stan Shebs's message of "Tue,	28 Feb 2012 23:03:49 -0800")

>>>>> "Stan" == Stan Shebs <stanshebs@earthlink.net> writes:

Stan> This patch implements a "dynamic printf", which is basically a
Stan> breakpoint with a printf;continue as its command list - but with
Stan> additional features that make it more interesting.

Very nice.  I implemented something like this in Python once, but
without the cool remote agent features.

Stan>     dprintf <location> <format>,<arg>,<arg>...
Stan> where the location is as for breakpoints, while the format and args
Stan> are as for the printf command.  So you could have something like

I think you have to have a comma after the location.  That is the only
reliable linespec terminator.

Stan> The patch itself is somewhat of a hack-n-slash through the middle of
Stan> GDB, and there is much to critique. :-)

I have a few things, but nothing really major.  Some of this is outside
areas I know much about, but I did at least skim it all and I think it
generally looks good.

Stan> +/* Parse the given expression, compile it into an agent expression
Stan> +   that does a printf, and display the resulting expression.  */
Stan> +
Stan> +extern char *parse_format_string (char **arg);

There must be a header that this could go in.

Stan> +#if 0

:)

Stan> +char *
Stan> +parse_format_string (char **arg)

Need intro comment.

This looks like bits were copied from printcmd.c:ui_printf.
Could the code be shared instead?

Stan> +/* Temporary hack to smuggle remainder of command line through.  */
Stan> +char *glob_extra_string = NULL;

I'd much prefer something cleaner.
There's been a lot of work in recent times to clean up breakpoints in
various ways -- adding methods, refactorings, etc -- and there is more
to come.  This goes against the trend.

Stan> +  struct agent_expr *cmd_bytecode;

Needs a comment.
Perhaps subclassing bp_location is also doable?

Stan> +	case gdb_agent_op_printf:
[...]
Stan> +	    /* (should re-check format before calling?) */
Stan> +	    printf (format,
Stan> +		    args[0], args[1], args[2], args[3], args[4],
Stan> +		    args[5], args[6], args[7], args[8], args[9]);

Yeah, this seems overly optimistic to me.
gdb used to have bugs where bad printf commands would crash it (IIRC
there are some closed PRs about this).
Maybe common-izing some code from ui_printf is the right thing?  Or some
kind of format checking.  Also this leaves you at the mercy of the host
printf for the '"%s", 0' case.

Tom


  parent reply	other threads:[~2012-03-08 21:08 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-29  9:14 Stan Shebs
2012-02-29 10:28 ` Andreas Schwab
2012-03-13 23:09   ` Stan Shebs
2012-03-14 14:47     ` Marc Khouzam
2012-03-14 15:28     ` Tom Tromey
2012-02-29 16:16 ` Joel Brobecker
2012-03-13 23:15   ` Stan Shebs
2012-03-13 23:40     ` Joel Brobecker
2012-02-29 18:21 ` Eli Zaretskii
2012-03-13 23:20   ` Stan Shebs
2012-03-01 14:04 ` Hui Zhu
2012-03-04  6:31   ` Hui Zhu
2012-03-08 21:08 ` Tom Tromey [this message]
2012-03-13 23:51   ` Stan Shebs
2012-03-14 15:24     ` Tom Tromey

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=87ipien6me.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=stanshebs@earthlink.net \
    /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