23.9.4. Trace source lines
We can further use Binutils' addr2line
to get the line that corresponds to each address:
./trace-boot --arch x86_64 ./trace2line --arch x86_64 less "$(./getvar --arch x86_64 run_dir)/trace-lines.txt"
The last commands takes several seconds.
The format is as follows:
39368 _static_cpu_has arch/x86/include/asm/cpufeature.h:148
Where:
-
39368
: number of consecutive times that a line ran. Makes the output much shorter and more meaningful -
_static_cpu_has
: name of the function that contains the line -
arch/x86/include/asm/cpufeature.h:148
: file and line
This could of course all be done with GDB, but it would likely be too slow to be practical.
TODO do even more awesome offline post-mortem analysis things, such as:
-
detect if we are in userspace or kernelspace. Should be a simple matter of reading the
-
read kernel data structures, and determine the current thread. Maybe we can reuse / extend the kernel’s GDB Python scripts??