Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Stan Shebs <stan@codesourcery.com>
To: Tom Tromey <tromey@redhat.com>
Cc: GDB Development <gdb@sourceware.org>
Subject: Re: multi-{inferior,exec}
Date: Fri, 10 Sep 2010 22:52:00 -0000	[thread overview]
Message-ID: <4C8AB69B.4010108@codesourcery.com> (raw)
In-Reply-To: <m3vd6m30y2.fsf@fleche.redhat.com>

Tom Tromey wrote:
> I've been looking at multi-inferior/multi-exec the last few days.  I
> want to polish a few edges and make it work nicely on Linux.  I thought
> I'd post about what I think I am going to implement.
>
> [...]
>
> I think the next missing bit is support for I/T sets.  E.g., I wanted to
> try to debug g++ but put a breakpoint in its cc1plus subprocess.  You
> can do this today, but only clumsily: either by using add-inferior to
> load the symbols for cc1plus, or by using "catch exec" and setting the
> breakpoint at exec time.  I/T sets would let users set this sort of
> breakpoint more easily.
>   

I/T sets are one of the bits that didn't make it from 
multiprocess-20081120-branch to the trunk.  You can look at the branch's 
inferior.h and see the internal definition, which basically consists of 
a string that is the specification and a possibly-dynamic vector of 
inferiors computed from it.

> I am not sure what is required to integrate I/T sets into inferior
> control (something mentioned on the wiki page).  If anyone (Pedro?
> Stan?) has state to share, I'm happy to hear it.
>   

Much of it is a matter of deciding what to iterate over, vs limiting to 
a single current inferior.  For instance, using the prefix syntax I 
originally suggested, "[4-6] print x" should print three lines, add 
three elements to value history, etc.  So one could imagine a generic 
i/t set iteration meta-command, but it's not clear that iteration is 
always the right thing to do, and maybe individual commands should 
somehow whether they are sensible for iteration.

> I think we can add an I/T set specifier before the linespec argument to
> "break".  (I couldn't think of other commands that use linespecs that
> would need this...)  E.g., in the g++ scenario, this would set a
> breakpoint that would be resolved in libcpp:
>
>     (gdb) break [*] collect_args
>
> "[*]" is the I/T set representing "all current or future inferiors".
>   

In my global breakpoint project ( 
http://sourceware.org/ml/gdb/2010-05/msg00019.html ), I've been using a 
"process" keyword where "thread" and "task" are used now.  It doesn't 
win elegance points, but I think it corresponds better to how the user 
thinks - "OK, I'm breaking on collect_args, and oh yeah, I want to catch 
it in any process, not just the one I have now".  I don't think it would 
hurt to support a couple syntax variations, there is not going to be 
much prior expectation to accommodate.

> If no I/T set is specified, it would default to the current inferior.
>
> The original spec had a "focus" command... but that is already used by
> the TUI.  How did that get resolved?  It seems to me that we could just
> use "select" instead.
>   

I changed TUI to use "ffocus", on the theory that there aren't many TUI 
users.  "select" isn't great because completion is ambiguous with 
"select-frame".
> I was thinking it would be nice to extend "thread apply" to take an I/T
> set argument.  Maybe "inferior apply" is a nicer way to spell it.
>   

One advantage to prefix is that the '[' introduces the iteration desire 
succinctly.

> I think maybe the I/T set syntax could be expanded or changed a little.
> I'm at least thinking of "." as a synonym for "current inferior", and
> being able to differentiate named sets and executables.
>   

I added a few things beyond the original spec, but it's been so long I 
don't remember what. :-)

Stan


      parent reply	other threads:[~2010-09-10 22:52 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-03 22:41 multi-{inferior,exec} Tom Tromey
2010-09-04  6:26 ` multi-{inferior,exec} Jan Kratochvil
2010-09-05 17:16 ` multi-{inferior,exec} Nenad Vukicevic
2010-09-07 17:04   ` multi-{inferior,exec} Tom Tromey
2010-09-07 21:34     ` multi-{inferior,exec} Daniel Jacobowitz
2010-09-07 21:50       ` multi-{inferior,exec} Nenad Vukicevic
2010-09-10 21:56 ` multi-{inferior,exec} Tom Tromey
2010-09-10 23:07   ` multi-{inferior,exec} Stan Shebs
2010-09-11  1:46     ` multi-{inferior,exec} Tom Tromey
2010-09-10 22:52 ` Stan Shebs [this message]

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=4C8AB69B.4010108@codesourcery.com \
    --to=stan@codesourcery.com \
    --cc=gdb@sourceware.org \
    --cc=tromey@redhat.com \
    /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