coreboot-kgpe-d16/util/genprof
Patrick Georgi 6065f616eb .gitignore: Split into subdirectory files
There's no need for the global list of files to ignore, so use git's
ability to work with more local configuration.

Change-Id: I50882e6756cbc0fdfd899353cc23962544690fb3
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46879
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Christian Walter <christian.walter@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2020-10-30 07:05:27 +00:00
..
.gitignore .gitignore: Split into subdirectory files 2020-10-30 07:05:27 +00:00
Makefile
README
description.md
genprof.c
log2dress

README

Function tracing
----------------

Enable CONFIG_TRACE in debug menu. Run the compiled image on target. You will get
a log with a lot of lines like:

...
~0x001072e8(0x00100099)
~0x00108bc0(0x0010730a)
...

First address is address of function which was just entered, the second address
is address of functions which call that.

You can use the log2dress to dress the log again:

...
src/arch/x86/lib/c_start.S:85 calls /home/ruik/coreboot/src/boot/selfboot.c:367
/home/ruik/coreboot/src/boot/selfboot.c:370 calls /home/ruik/coreboot/src/device/device.c:325
...

Alternatively, you can use genprof to generate a gmon.out file, which can be used
by gprof to show the call traces. You will need to install uthash library to compile
that.

Great use is:

make
./genprof /tmp/yourlog ;  gprof ../../build/ramstage |  ./gprof2dot.py -e0 -n0 | dot -Tpng -o output.png

Which generates a PNG with a call graph.