Re: How does GDB load source line information during dlopen calls

Simon Marchi <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 2018-01-05 01:48 AM, shravan wrote:
> Hi all,
> First time poster to this list - so please bear with me :)
> I am currently working on a project that has a custom dynamic loader for
> shared libraries in the ELF format - it does NOT use dlopen. When debugging
> this dynamically loaded library, I am hoping to be able to single step
> through the C source code of functions in the library in tui mode.
> 
> If I had use dlopen this would work fine, but this does not work using the
> custom dynamic loader. I am able to get the libraries symbols loaded with
> "add-symbol-file". However the src line information is still not working.
> For example "list someFunctionInLibrary" prints nothing and "layout src"
> shows a blank screen
> 
> I am hoping for any information or suggestions. Is there some way to hint
> to gdb to load the source line information from a particular file at a
> particular address?
> 
> (Also please let me know if there is a better venue for the question).
> 
> Thanks!
> Shravan
> 

Hi Shravan,

For all I know, add-symbol-file should make GDB read the DWARF info
of the library, like it does for a automatically loaded libraries.
Are your libraries built with DWARF debug information?

I just tried making a small library with:

int
bob (void)
{
        return 42;
}

I am able to pretend that this library was loaded at an arbitrary offset
and list lines from its source files:

(gdb) add-symbol-file lib/libbob.so  0x1000000
add symbol table from file "lib/libbob.so" at
        .text_addr = 0x1000000
(y or n) y
Reading symbols from lib/libbob.so...done.
(gdb) list bob
1       int
2       bob (void)
3       {
4               return 42;
5       }
(gdb) p &bob
$1 = (int (*)(void)) 0x1000100 <bob>
(gdb) list *0x1000100
0x1000100 is in bob (bob.c:3).
1       int
2       bob (void)
3       {
4               return 42;
5       }
(gdb) b bob.c:4
Breakpoint 2 at 0x1000104: file bob.c, line 4.


So I think add-symbol-file should work for you, there is probably a missing
link somewhere.  I don't think I can't help you without more information,
or an actual program to debug.

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.