From: Vladimir Prus <vladimir@codesourcery.com>
To: gdb-patches@sources.redhat.com
Subject: Re: [Patch] Fix for -var-update to use natural format to compare
Date: Tue, 22 Jan 2008 15:35:00 -0000 [thread overview]
Message-ID: <fn52ec$cb6$1@ger.gmane.org> (raw)
In-Reply-To: <20080122150232.GA32509@caradoc.them.org>
Daniel Jacobowitz wrote:
> On Tue, Jan 22, 2008 at 09:43:21AM -0500, Marc Khouzam wrote:
>> You can refer to http://sourceware.org/ml/gdb/2008-01/msg00175.html
>> where you had agreed with me :-)
>
> That's what happens when the thread goes on too long :-)
>
> Here's the problem, as I see it. There are two different reasonable
> definitions of "varobj has changed". One is that the textual
> representation has changed. The other is that the underlying bytes
> have changed.
>
> We used to check the underlying bytes. This was a problem because the
> textual representation for a "char *" includes more bytes than the
> value, for C-like languages. So, as Nick mentioned last week, we
> would not detect a change from "GNU" to "GDB" in a "char *", but we
> would display the "GNU" string in -var-evaluate-expression.
>
> We switched to checking the string representation. But if you're
> looking in lots of formats, then this is not enough.
>
> We could check in all supported formats; check in the natural format;
> or go back to checking the underlying bytes. Checking in the natural
> format is appealing because it's efficient. But does the natural
> format always capture changes in any of the other formats?
We don't know. In particular, because we haven't yet
fully implemented Python-based custom formatting of things, so we're
not sure how that work and interact with traditional formats.
Specifically, suppose there a command that specifies Python function
used to compute string representation of a value. In that case, 'natural'
format in the current meaning might not change while string
representation return by the Python code changes.
I think there are actually two different problems:
1. Given single varobj that is displayed in one format, how does one
one if the value is "really changed". The answer here is that you don't
get to find that -- -var-update reports only changes in displayed
value, and since changing format is fast, nothing else is needed here.
2. If UI wishes to show varobj in several formats, how does it
figure out of *any* of formats has changed. There are two possible
solutions:
(a) Always keep varobj (from frontnend) in natural format, and assume
that if natural format changes, all values possibly change. In this
case, getting a value in different format will involve switching
to that format and then switching back.
(b) Allow a varobj to have a *list* formats to show. Make
-var-update check all formats, make -var-evaluate-expression
return all formats.
Now (a) can be done either on frontend side, or on gdb side (by making
comparisons use naturally formatted string). I suspect that the frontend
side is better here, since very few frontends regularly show same
value in several formats.
- Volodya
- Volodya
next prev parent reply other threads:[~2008-01-22 15:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-22 3:25 Marc Khouzam
2008-01-22 3:53 ` Daniel Jacobowitz
2008-01-22 14:43 ` Marc Khouzam
2008-01-22 15:03 ` Daniel Jacobowitz
2008-01-22 15:12 ` Marc Khouzam
2008-01-22 15:35 ` Vladimir Prus [this message]
2008-01-22 16:38 ` Marc Khouzam
2008-01-22 17:50 ` Vladimir Prus
2008-01-22 17:59 ` Daniel Jacobowitz
2008-01-23 0:33 ` Nick Roberts
2008-01-23 14:41 ` Marc Khouzam
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='fn52ec$cb6$1@ger.gmane.org' \
--to=vladimir@codesourcery.com \
--cc=gdb-patches@sources.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