This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RCF 00/11] Visit varobj available children only in MI
- From: Yao Qi <yao at codesourcery dot com>
- To: <gdb-patches at sourceware dot org>
- Date: Tue, 17 Dec 2013 20:52:38 +0800
- Subject: Re: [RCF 00/11] Visit varobj available children only in MI
- Authentication-results: sourceware.org; auth=none
- References: <1385258996-26047-1-git-send-email-yao at codesourcery dot com>
On 11/24/2013 10:09 AM, Yao Qi wrote:
> Hi,
> This patch series proposes a feature that GDB is able to visit varobj
> available children only, by adding a new option
> "--available-children-only" to commands -var-create,
> -var-info-num-children and -var-list-children. This patch series was
> written by Pedro in one patch. I read the patch three months ago, split
> it, add some minor things, and write test cases. I wish I didn't
> break anything, including the rationale and the implementation :)
>
> In each traceframe, with option --available-children-only, the
> children of varobj vary, so it behaves like a dynamic varobj.
> Since the key of dynamic varobj is the iterator, which can be used to
> visit each child. We need a new iterator for varobj with
> --available-children-only.
>
> Current dynamic varobj is python pretty-printer specific, so the
> iterator is python specific too. In order to add a new type of iterator,
> we have to generalize iterator and de-couple it from python. At
> present, iteration is performed against PyObject, but it can
> generalized to a name-value pair. That is what patch #1 ~ #3 do.
> Note that patch #2 and #3 can be a single commit, but I split it for
> review. Ideally, dynamic varobj can be a generic stuff, IMO.
>
> After the changes in patch #1 ~ #3, we find some code are not
> python-specific, so #if HAVE_PYTHON can be removed. It is done by
> patch #4.
>
> Since we think dynamic varobj is no longer python specific, we'd
> better rename predicate varobj_pretty_printed_p to varobj_is_dynamic_p,
> and use it more widely (done by patch #5 #6). It paves a way for
> the next patches to add a new type of dynamic varobj.
>
> Patch #7 adds the option --available-children-only in MI code, patch
> #8 adds the corresponding iterator, and patch #9 updates varobj children
> when traceframe is changed. These three should be in one commit.
> Note that there is at most one iterator can be applied to one varobj.
> If pretty-printer is installed and option --available-children-only
> is used, GDB has to return one iterator, and we choose iterator
> for available-children-only.
>
> Patch #10 and #11 are about test cases. Patch #10 is to teach
> testsuite to match dynamic="1", and patch #11 is the test case for
> option --available-children-only.
>
> I don't include NEWS and doc patch in this series, because we'd like
> to discuss on "whether we can call varobj with --available-children-only
> a dynamic varobj". The result affects the doc, IMO. Although we
> implemented varobj with --available-children-only as a dynamic varobj,
> I am not sure we can do the same in doc, which is user visible.
>
> The whole series is tested on x86_64-linux.
Ping. https://sourceware.org/ml/gdb-patches/2013-11/msg00739.html
I am OK to check in after branch 7.7 is created.
--
Yao (éå)