Re: Values of std::vector not showing up in debug window
zb4ng <[email protected]>
| Newsgroups | gmane.comp.kde.users.kdevelop |
|---|---|
| Message-ID | <[email protected]> |
On 11/21/18 5:37 PM, Kevin Funk wrote: > On Wednesday, 7 November 2018 17:09:01 CET zb4ng wrote: >> Hi, >> >> I am sitting on a small C++ project using the standard library >> "vector"-container and can't see the entries in a "std::vector<long>" in >> the "Variables" window while debugging. >> Even after I had installed the "DEBUG-INFO" packages (see below), they >> were missing. >> I don't know, if I've done sth wrong or if this is a known issue. >> As an alternative, it would be possible to use the "print" command in >> GDB, but it's a little too cumbersome. >> >> >> Distro: openSuSE Leap 15.0 >> KDE: KDE Frameworks 5.45.0, >> Qt 5.9.4 (built against 5.9.4) >> KDevelop: 5.1.2 >> >> "DEBUG-INFO" packages: >> gcc7-debugsource >> libstdc++6-debuginfo >> libstdc++6-32bit-debuginfo > > Heya, > > what you will definitely need are the STL GDB pretty printers (a file called > libstdcxx/v6/printers.py) > > On Ubuntu they are in this package: > libstdc++6:amd64: /usr/share/gcc-8/python/libstdcxx/v6/printers.py > > > # Solution A > > You'll also need to load them in KDevelop, for this, edit the gdbinit file > installed by KDevelop (for your probably somewhere in /usr/.../kdevgdb/ > printers/gdbinit) and add this between "python & "end": > > ``` > sys.path.insert(0, '/usr/share/gcc-8/python/') > from libstdcxx.v6.printers import register_libstdcxx_printers > register_libstdcxx_printers (None) > ``` > > > # Solution B > > Since some version GDB also supports auto-loading them (this is what happens > here on my Ubuntu system), cf.: > https://stackoverflow.com/a/42896336 > > This file here causes gdb to auto-load the pretty printers: > libstdc++6:amd64: /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc+ > +.so.6.0.25-gdb.py > > To check whether pretty-printing STL types works at all, probably try to debug > a simple test program creating a std::vector<> and debug it with command-line > GDB and print the vector. > > > Hope that helps. > > Regards, > Kevin > > >> I checked the release notes of later versions, but didn't find sth there >> either. >> >> Thanks, >> zb4bg > > Hi, thanks for your answer! Well, as mentioned, I actually wanted to avoid the GDB-console and would rather use the "Variables"-window on the left hand side. I tried your suggestion (via Solution A), but there still seems to be a problem: -------------------- set print pretty on disp v -------------------- leads to "std::vector of length 0, capacity 10" and no elements are displayed. But this is OK for me now, since I found that I can - as a workaround - switch to std::array for debugging, so I'm fine for now. (Only problem: arrays can't handle as many elements as vectors) Thank you once more and best regards, zb4bg