public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Two apparent C++ bugs concerning Containers Library objects: vectors, deques etc. - Codelite & NetBeans affected
@ 2015-07-06 14:19 Robin Whittle
  0 siblings, 0 replies; only message in thread
From: Robin Whittle @ 2015-07-06 14:19 UTC (permalink / raw)
  To: gdb

I have spent the last few days characterizing two apparent problems with
gdb's MI behavior regarding C++ Containers Library objects.

https://sourceware.org/bugzilla/show_bug.cgi?id=18623
MI -var-update problems with vector of vectors

https://sourceware.org/bugzilla/show_bug.cgi?id=18627
MI -var-list-children on not-yet-created vector crashes gdb and/or
provides invalid list of children and their values

These both have example programs and detailed instructions on recreating
the problem in a command line session of gdb.

The first problem prevents me from using gdb under Codelite for any
program using vectors of vectors and the like.  The second prevents me
from using gdb under NetBeans for any program containing even a vector
or deque of ints.

I discovered the problems with gdb 7.7.1 and they are still present in
the recent trunk snapshot (2015-07-02) on which I based the above
problem reports.  The first problem also occurred for me and Codelite's
developer under Windows - and he was using gdb 7.8.1.

I guess that these problems are confusing lots of people, who generally
don't have the patience to narrow down the cause to gdb specifically.
It is difficult to drill down to this level with certainty, since a
programer might suspect trouble could be in the IDE's code or
configuration or how they have lashed the IDE, libstdc++, compiler,
printers.py etc. together.

In the first case, gdb can pretty print vectors of vectors etc. just
fine, unless particular commands are used - and then there is a
distinctive pattern of correct results for elements 1 and 2 of the outer
vector, null results for element 0, and an unrecoverable error for all
other elements:

   c-varobj.c:893: internal-error: cplus_describe_child: Assertion
`access' failed.

In the second case, gdb is perfectly capable of pretty printing these
objects once they are created.  So in both cases I think I have
printers.py working correctly - it is the one which matches the libstdc++.

Hopefully an experienced gdb developer will be able to fix these, or
advise what might be wrong with my setup.  I am not game to get into the
gdb code itself - and even if I did succeed in finding the fault, I
would not be confident that my fix would not upset something else.

Thanks for gdb, gcc and libstdc++!

  - Robin

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-07-06 14:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-06 14:19 Two apparent C++ bugs concerning Containers Library objects: vectors, deques etc. - Codelite & NetBeans affected Robin Whittle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).