From: Daniel Jacobowitz <drow@false.org>
To: Frederic RISS <frederic.riss@st.com>
Cc: Greg Watson <g.watson@computer.org>,
Vladimir Prus <vladimir@codesourcery.com>,
gdb-patches@sources.redhat.com
Subject: Re: MI: frozen variable objects
Date: Thu, 16 Nov 2006 15:55:00 -0000 [thread overview]
Message-ID: <20061116155504.GA11539@nevyn.them.org> (raw)
In-Reply-To: <1163690698.3219.199.camel@localhost.localdomain>
On Thu, Nov 16, 2006 at 04:24:58PM +0100, Frederic RISS wrote:
> On Thu, 2006-11-16 at 06:58 -0700, Greg Watson wrote:
> > I don't really understand the motivation for putting this kind of
> > functionality into gdb. Any GUI that is more than just a front-end
> > for gdb will most likely have an internal data structure representing
> > the value of the variable, and can retain or manage access to the
> > value if required. It seems to me that adding functionality like this
> > to gdb just adds to bloat when it is really a GUI function anyway.
Disclaimer: I've already talked with Vladimir about this at length and
if I remember right he's the one who persuaded me that GDB was the
right place to do it. After this I'll let him speak for himself.
Why should the GUI have a separate data structure for the value in a
manipulatable form? I suspect that some GUIs only keep it around as a
string, for display. Then if the user wants a radix switch, the
easiest way is to tell GDB (-var-set-format).
The overall utility of -var-update * is somewhat suspect, I think,
since it can take so long to run; to make it practical you'd have to
delete varobjs for things not currently on-screen. But as long as that
functionality exists, we figured it would be nice to not break it.
The read-sensitive values that Vladimir alluded to are our ultimate
goal here and you'll be seeing rather more of them in the next
few weeks. Whenever we've suggested to a customer that our Eclipse
ought to pop up a window that shows all of their target's peripheral
I/O registers, the response has been jumping-up-and-down enthusiastic.
But without some solution for this problem we just can't do it. Having
that window pop open, acknowledge all your pending interrupts, and
steal one byte from each serial port FIFO, would be a real downer.
> The interesting part seems to be the one that hasn't been submited yet
> about GDB auto-freezing some values due to archtectural requirements.
> The debugger has architectural knowledge and it shouldn't be necessary
> to duplicate it in the GUI.
Exactly. My original sketch for this stuff had an XML file that we
passed from the target directly to the GUI, but that duplicates a
certain amount of work between GDB and the GUI, and between GUIs.
> I agree with your general point though. Maybe the functionality
> shouldn't be in the debugger, but the information should be available to
> the GUI... through varobj properties maybe? Of course this means that
> the GUIs have to known about and respect this information.
And what about people who actually use the command line GDB? That was
the argument that tipped the scales for me in favor of this approach.
It allows the varobj mechanism to be consistent with what we want the
GDB CLI to offer to the user.
That's not immediately clear what I mean. Here's a sample. This is
mostly pipe dream, I don't think we're going to implement it right now.
But suppose you have a type:
struct regs
{
int InterruptStatus;
int Config;
int ClockVal;
} *regs;
Maybe Config is a static register, ClockVal is a continually updating
read-only timer, and InterruptStatus is a read-sensitive value where
reading acknowledges any reported interrupt (this is not uncommon). If
the user does "print/x *regs", and GDB can determine that yes, regs is
really pointing to some hardware registers that GDB knows about, it
would be awesome for GDB to say:
$1 = { InterruptStatus = <read-sensitive>, Config = 0x8000,
ClockVal = 0x1212 }
I haven't thought too much about the UI here, so don't take it too
seriously. The key is to warn the user before they mess with the
state of their board doing something that seems like it ought to
be harmless.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2006-11-16 15:55 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-16 12:48 Vladimir Prus
2006-11-16 13:58 ` Greg Watson
2006-11-16 15:25 ` Frederic RISS
2006-11-16 15:55 ` Daniel Jacobowitz [this message]
2006-11-16 16:26 ` Frederic RISS
2006-11-16 16:34 ` Daniel Jacobowitz
2006-11-17 15:21 ` Greg Watson
2006-11-16 18:55 ` Vladimir Prus
2006-11-16 21:36 ` Frédéric Riss
2006-11-17 6:17 ` Vladimir Prus
2006-11-17 8:54 ` Frederic RISS
2006-11-16 18:47 ` Vladimir Prus
2006-11-17 15:09 ` Greg Watson
2006-11-17 15:15 ` Daniel Jacobowitz
2006-11-17 15:26 ` Greg Watson
2006-11-17 15:33 ` Daniel Jacobowitz
2006-11-17 15:41 ` Greg Watson
2006-11-17 15:45 ` Daniel Jacobowitz
2006-11-17 18:16 ` Daniel Jacobowitz
2006-11-17 15:35 ` Greg Watson
2006-11-17 15:27 ` Vladimir Prus
2006-11-16 21:53 Nick Roberts
2006-11-16 22:00 ` Daniel Jacobowitz
2006-11-16 23:07 ` Nick Roberts
2006-11-17 15:19 ` Daniel Jacobowitz
2006-11-17 20:52 ` Nick Roberts
2006-11-17 21:05 ` Daniel Jacobowitz
2006-11-17 23:12 ` Nick Roberts
2006-11-18 11:00 ` Eli Zaretskii
2006-11-17 6:25 ` Vladimir Prus
2006-11-17 18:14 ` Daniel Jacobowitz
2006-11-18 6:59 Nick Roberts
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=20061116155504.GA11539@nevyn.them.org \
--to=drow@false.org \
--cc=frederic.riss@st.com \
--cc=g.watson@computer.org \
--cc=gdb-patches@sources.redhat.com \
--cc=vladimir@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