RE: GDB support: Couldn't find method

Viesturs Veckalns <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hello Simon,
It turns out gdb does not know anything about class methods and nested classes loaded from the shared library:

(gdb) ptype GetLevel(resultcode)             
type = struct CompoundHistoUnfolding::Level {
    <incomplete type>
} *
(gdb) ptype CompoundHistoUnfolding::Level         
There is no field named Level

gdb can list members of class CompoundHistoUnfolding but does not know about classes interfaced with the #include directive:

(gdb) ptype CompoundHistoUnfolding       
type = class CompoundHistoUnfolding : public TNamed {
  private:
Python Exception <class 'gdb.error'> No type named TString.: 
    std::map<TString, HistoUnfolding*, std::less<TString>, std::allocator<std::pair<TString const, HistoUnfolding*> > > aggrbackgroundMC;
Python Exception <class 'gdb.error'> No type named HistoUnfolding*.: 
    std::vector<HistoUnfolding*, std::allocator<HistoUnfolding*> > _vbackgroundhistos;
Python Exception <class 'gdb.error'> No type named SampleDescriptor*.: 
    std::vector<SampleDescriptor*, std::allocator<SampleDescriptor*> > _expsyssamples;
    std::vector<SampleDescriptor*, std::allocator<SampleDescriptor*> > _markedsyssamples;
    HistoUnfoldingTH2 *totalbackground;
    char _signal_title[64];
...

How to proceed from this point?
Viesturs
________________________________________
From: Simon Marchi [[email protected]]
Sent: 08 August 2018 02:27
To: Viesturs Veckalns
Cc: [email protected]
Subject: Re: GDB support: Couldn't find method

On 2018-08-04 07:48, Viesturs Veckalns wrote:
> Hello!
> I compile a binary by linking a library:
>
> -L${LIBDIR}/lib -lCompoundHisto
>
> In the debug session the library is listed under
>
> info sharedlibrary
>
> Additionally, I requested to read symbols from the relevant source
> files by
>
> set debug-file-directory ${LIBDIR}/interface
> set debug-file-directory ${LIBDIR}/src
>
> Nevertheless, I encounter the following problem:
>
> p GetLevel(resultcode) -> GetHU(mo)
> Couldn't find method CompoundHistoUnfolding::Level::GetHU
>
> The methods are described in the source to build libCompoundHisto.so
>
> What is wrong?
>
> My gdb version is 7.11.
> Viesturs

Hi Viesturs,

A sanity check to see if GDB knows about any GetHU method would to do

   (gdb) ptype GetLevel(resultcode)

or

   (gdb) ptype CompoundHistoUnfolding::Level

Do you see GetHU listed?

Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.