backtrace_symbols_fd - Linux


Overview

backtrace_symbols_fd is a Linux utility that prints backtraces of a process, reading backtrace data from a file descriptor. It is commonly used for debugging purposes, allowing developers to see a detailed stack trace for a given process.

Syntax

backtrace_symbols_fd [-s | -f] [-r] [-d] [-p] <file descriptor>

Options/Flags

  • -s: Print symbol names instead of hexadecimal addresses.
  • -f: Print frame pointers instead of return addresses.
  • -r: Parse register values and print them as a separate line.
  • -d: Print a disassembly of each code location.
  • -p: Print a disassembly of the place at the tip of the stack.

Examples

Print a backtrace with symbol names:

backtrace_symbols_fd -s /proc/self/fd/10

Print a disassembly of the stack tip:

backtrace_symbols_fd -p /proc/self/fd/10

Common Issues

  • Error: "Failed to read backtrace data": Ensure that the specified file descriptor is valid and that it contains valid backtrace data.
  • Missing symbol names: If symbol names are not printed, make sure that the debug symbols are available for the process.

Integration

backtrace_symbols_fd can be integrated with other tools for further analysis:

  • gdb: Use target remote /dev/fd/10 to attach gdb to a process and get a backtrace.
  • Perf: Use perf record -g to record a performance trace and then use backtrace_symbols_fd to print a backtrace for specific events.

Related Commands

  • backtrace
  • gdb
  • perf