Using gdb to print TString gives 'incomplete type'

Below is the description of my original problem and posting -
that I’ve since solved by using the debug build of Root.

But I don’t understand why gdb needs the Root libraries built with debug info to debug my own program.

Can I use gdb to debug a C++ program using root, and have gdb display TString’s properly?

I first had this problem with my program. I also recreated it with the tstring.cxx program in the /root/test directory. I am properly compiling and linking with -g (in fact, gdb happily displays my own local variables)

When I build under windows and visual studio, the visual studio debugger has no problem displaying TStrings.

Root Version 5.22; gcc version 4.1.2 .

I’m now rebuilding a debug version of root with -build=debug, to see if that helps. But I don’t understand why gdb would need the symbols for root itself. Shouldn’t it have everything it needs due to the compile of my test program?

What am I doing wrong?



The C++ compiler and linker do not duplicate all debug symbols in all the libraries using those symbols. Instead they copy them only once in the library than implements them (ok this is a bit over simplified :slight_smile:).
So yes, you will need a debug version of the ROOT library.