From: Tom Tromey <tromey@redhat.com>
To: Stan Shebs <stan@codesourcery.com>
Cc: gdb@sourceware.org
Subject: Re: Multiprocess GDB, formal spec
Date: Fri, 15 Aug 2008 13:13:00 -0000 [thread overview]
Message-ID: <m3ej4r2xfa.fsf@fleche.redhat.com> (raw)
In-Reply-To: <48A35D22.30705@codesourcery.com> (Stan Shebs's message of "Wed\, 13 Aug 2008 15\:16\:02 -0700")
>>>>> "Stan" == Stan Shebs <stan@codesourcery.com> writes:
Stan> The following writeup is a more formal specification for
Stan> multiprocess GDB.
I read this. I like it a lot.
I have a few comments -- nothing too major though.
Stan> The command-line syntax for inferior/thread sets is '[<spec>]', where
Stan> <spec> may take several forms.
I know this comes from HPD. I wonder if maybe "inferior apply" would
be more gdb-ish? Or even just "focus [itset] command"? (I sort of
hesitate to mention this, due to its bikesheddy nature. If it helps I
dropped most of my commentary on the names of other things :-)
Stan> [<name>]
Stan> Specifies the named itset <name>.
Stan> [<exec>]
Stan> Specifies the default inferior corresponding to the program named <exec>.
I'm a bit cautious here due to possible ambiguities.
Perhaps we don't care since names are assigned by the user.. ?
Do we want an explicit name for the current itset?
Stan> [TBD: Allow '[]' to be optional when it is unambiguous, as in
Stan> focus command?]
Yeah, I think so, at least as long as that is all that "focus" does.
Stan> focus <itset>
Stan> Sets the effect of subsequent commands to apply only to the inferiors
Stan> and threads in the given itset. This set is known as the "current" itset.
I think there has to be an implicit focus around breakpoint commands
(this comes a bit later in the spec).
But actually, this is kind of a weird area. Should a breakpoint
command be able to change the focus for the CLI? Or should the
commands push a focus, then pop it after the commands are done?
ISTR some other thread touching this topic recently.
Stan> set follow_exec true
Maybe a "-" instead of "_", for consistency with follow-fork?
Stan> For instance, "break main" can cause every program under GDB's
Stan> control to stop soon after it starts; to break in only some
Stan> executables, the syntax "break #<inf>#main" would be necessary.
I am curious how I would go about setting a breakpoint in an inferior
that doesn't exist yet.
E.g., suppose I want to run gcc and break at a function in cc1. Would
I "add-file /dir/cc1" and then "break #cc1#function"? And then gdb
would hold this as a kind of pending breakpoint until a cc1 actually
starts?
Stan> [TBD: have a way to delete "locations" from a breakpoint? too
Stan> complicated?]
If we had a name for the current itset, you could do:
[all] break #[current]#main
... to set individual breakpoints on each main. That would make each
one individually manipulable.
Stan> When one of the inferiors/threads stops, GDB sets the current
Stan> itset to consist of just the inferior and thread that actually
Stan> stopped. The user is free to change the focus thereafter.
I wonder about the UI here. Suppose I am debugging many programs, all
running async. And, I have my focus on one particular one, which I
have stopped. Then, some background program hits a breakpoint.
In this case, I am already typing away at the gdb prompt -- so, having
the itset change immediately would seem unfriendly. I could easily
end up typing commands at an inferior other than the one I thought I
was working on.
So, maybe in the async case gdb should just print a notification, e.g.:
Inferior stopped, type "focus 5" to focus.
I don't think this is a problem if programs are running synchronously.
In fact there it would be better to set the focus automatically when
the inferior stops, just because that is what everybody is used to.
Stan> info program
Stan> Displays the status of each inferior currently in existence, including
Stan> whether it is stopped and why.
Is this different from "info inferior"?
Stan> ** Planned limitations of the first version
Thanks for being explicit about this.
Tom
next prev parent reply other threads:[~2008-08-14 19:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-14 16:24 Stan Shebs
2008-08-15 13:13 ` Tom Tromey [this message]
2008-08-15 15:02 ` Stan Shebs
2008-08-22 13:17 ` Tom Tromey
2008-10-20 15:30 Marc Khouzam
2008-10-20 15:39 ` Joel Brobecker
2009-12-03 14:59 ` Marc Khouzam
2009-12-03 15:05 ` Marc Khouzam
2009-12-03 15:20 ` Christopher Faylor
2008-10-20 15:53 ` Stan Shebs
2008-10-20 16:23 ` Marc Khouzam
2008-10-31 19:13 ` Marc Khouzam
2008-10-31 19:57 ` Stan Shebs
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=m3ej4r2xfa.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=gdb@sourceware.org \
--cc=stan@codesourcery.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