This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]