Re: working of backtrace command in GDB

Simon Marchi via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>

On 1/24/23 23:49, Varun Kumar Erigila wrote:
> Hello Everyone,
>               I'm trying to figure out whether gdb makes use of CFI information for "backtrace command."
>               In case of watchpoints, gdb tries to figure out whether the frame containing the variable on which watchpoint is set is still present by going through all the frames in stack. (it calls execute_cfa_program function to figure this out).
>               But in the case of the backtrace command it does not call the execute_cfa_program to unwind all the frames.
>               Is there another mechanism gdb uses to unwind the stack frames apart from CFI information.

Hi,

If a frame's PC falls within a region described by DWARF debug info
(.debug_frame), then GDB will typically use it.  But if it doesn't, for
instance if the frame is in a library for which you don't have debug
info, then GDB will revert to its architecture-specific unwinders, which
tries to unwind the frame using some knowledge of the architecture's
ABI, or by analyzing the code.

Here's the fallback unwinder for the AArch64 architecture, for instance:

  https://gitlab.com/gnutools/binutils-gdb/-/blob/d8f5b7d1d1e8e1f0352848b7066dd133edd50773/gdb/aarch64-tdep.c#L1144-1154

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.