This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: How to load C++ pretty-printers
On Sun, 2019-03-17 at 17:30 +0200, Eli Zaretskii wrote:
> > From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
> > Cc: Eli Zaretskii <eliz@gnu.org>, Simon Marchi <simon.marchi@polymtl.ca>,
> > gdb@sourceware.org
> > Date: Sun, 17 Mar 2019 13:39:52 +0100
> >
> > But then:
> > p current_program_space->added_solibs[0]
> > One of the arguments you tried to pass to operator[] could not be converted to what
> > the function wants.
> > (why is then GDB not telling me what the function wants ?).
> > I am finally doing
> > p (*(struct so_list*)0x56275a765a60)
> >
> > But that all looks like a 'backward' user experience:
>
> Is that a problem with GDB or with the pretty-printer? If the latter,
> it might be worth telling this to the GCC folks.
I think it is a GDB problem: same behaviour with pretty printers
disabled:
(top-gdb) p current_program_space->added_solibs
$4 = {<std::_Vector_base<so_list*, std::allocator<so_list*> >> = {
_M_impl = {<std::allocator<so_list*>> = {<__gnu_cxx::new_allocator<so_list*>> = {<No
data fields>}, <No data fields>}, _M_start = 0x563c90cb1140,
_M_finish = 0x563c90cb1190,
_M_end_of_storage = 0x563c90cb11c0}}, <No data fields>}
(top-gdb) p current_program_space->added_solibs[0]
One of the arguments you tried to pass to operator[] could not be converted to what the
function wants.
(top-gdb)
Another strange thing in this area: with pretty printers disabled,
doing
ptype current_program_space->added_solibs
gives first a python error:
Python Exception <class 'gdb.error'> No type named so_list*.:
type = class std::vector<so_list*, std::allocator<so_list*> >
[with _Tp = so_list *, _Alloc = std::allocator<so_list*>]
while ptype so_list*
tells it is a known type:
(top-gdb) ptype so_list*
type = struct so_list {
so_list *next;
lm_info_base *lm_info;
char so_original_name[512];
char so_name[512];
program_space *pspace;
bfd *abfd;
char symbols_loaded;
objfile *objfile;
target_section *sections;
target_section *sections_end;
CORE_ADDR addr_low;
CORE_ADDR addr_high;
} *
That also looks like a GDB problem
(maybe ptype is missing the logic to consider so_list as
a struct ?).
Maybe there is a link between the 2 problems ?
Philippe