Re: GDB Incorrectly Reads & Resolves Shared Library Symbols [MinGW-w64]

William Adair via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAHj+M4LeUx2vhtVmv8WWGg8rM=CMAJspK1tRzXCoOEmnA7GDZw@mail.gmail.com>
Andrew,

Great feedback. It was a bit tricky to figure out how GDB was executing at
first in main(), but I realized that backtrace_command_1 was the function
I'm looking for in the stack.c file. The stack trace eventually hits
print_frame_info()->print_frame() [which relies on find_frame_sal()] ->
find_frame_funname -> lookup_minimal_symbol_by_pc() ->
lookup_minimal_symbol_by_pc_section()
A few immediate questions come to mind: What is the minimal symbol table?
How can I verify that PC is pointing to the section that the actual symbol
being executed resides in? Lastly, there's a comment: This code assumes
that the minimal symbols are sorted by ascending address values. Does this
imply that if the actual symbol for the PC has a lower address than the PC
that the symbol will be wrong? (I wonder if this is what is happening in my
case...)

Thanks everyone for your time.

On Sun, Nov 1, 2020 at 1:28 PM Andrew Dinn <[email protected]> wrote:

> On 31/10/2020 23:26, William Adair via Gdb wrote:
> > Can anyone recommend a way to start debugging GDB? I've found that when I
> > compile a 32-bit shared library that GDB is unable to correctly resolve
> the
> > symbols in the image and set breakpoints. Even when I reach a segfault
> and
> > print the backtrace, the symbols are incorrect or flat out missing. I
> > already verified that the image has .debug_* sections as would be
> required
> > for DWARF debugging, so I'm perplexed as to why GDB cannot correctly
> > resolve it and am looking for guidance.
> Well you can, of course, use your currently installed gdb to debug gdb.
>
> Build gdb from a downloaded src tree using
>
>   make install PREFIX=/path/to/install/dir CFLAGS=-g CXXFLAGS=-g.
>
> Then run
>
>   gdb --fullname /path/to/my/newly/built/gdb.
>
> When you type run you will enter a nested gdb that you can debug.
>
> Hint: before typing run type
>
> (gdb) set prompt (outer)
>
> That way you can distinguish prompts in the outer gdb from prompts in
> the inner gdb.
>
> n.b.b. make sure to type a space after (outer) or your typing will start
> right next to the closing bracket
> regards,
>
> After that all you need to do is familiarize wiht the gdb source!
>
>
> Andrew Dinn
> -----------
>
>
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.