function::symfileline - Linux
Overview
symfileline is a command-line utility for printing the name of the source file and line number associated with a given symbol in a DWARF debug information section. It allows developers to quickly locate the exact source code corresponding to a particular symbol in a compiled executable.
Syntax
symfileline [-a] [-f] [-l] [-n] [-r] [-s] [-t] <symbol>
Options/Flags
- -a: Print all matching symbols.
- -f: Only print the source file name.
- -l: Only print the line number.
- -n: Display the symbol name along with the file and line information.
- -r: Print the source file and line information in reverse order (file:line instead of line:file).
- -s: Suppress printing of the symbol name.
- -t: Print the symbol table offset.
Examples
Find the source file and line number for a specific symbol:
$ symfileline main
main: ./main.cpp:10
Print only the source file name:
$ symfileline -f main
./main.cpp
Print all matching symbols for a partial name:
$ symfileline -a foo
foo: ./foo.cpp:20
fooBar: ./bar.cpp:15
Common Issues
- Ensure that the debug information is embedded in the executable.
- If the symbol is not found, check if the correct symbol name is used and if the debug information is properly generated.
Integration
Combine with objdump
to examine debug information:
$ objdump -d a.out | symfileline -a
Use in scripts to automate symbol lookup:
#!/bin/bash
for symbol in $(nm a.out | grep main); do
symfileline $symbol
done
Related Commands
objdump
– Examine object files and display information about their contents.nm
– List symbols from an object file.c++filt
– Demangle C++ symbols.