Debugging with Flight Recorder
Weston can write debug scopes data to a circular ring buffer. This ring buffer can be accessed through a debug key, assuming you have a keyboard attached, or in case Weston dies, through a coredump. This document describes how to access that data in the later case.
The ring buffer data can be accessed with a gdb python script that searches the coredump file for the that ring buffer address in order to retrieve data from it.
Prior to setting this up make sure that flight recorder is configured
accordingly. Make sure that Weston is started with the debug scopes that
you’re interested into. For instance if you’d like to get the drm-backend
one
Weston should show when starting up:
Flight recorder: enabled, scopes subscribed: drm-backend
For that Weston needs to be started with --debug -f drm-backend
.
Also, make sure that the system is configured to generate a core dump. Refer
to man core(5)
for how to do that.
Next you’ll need the gdb python script, as that will be needed to search for the ring buffer within the coredump.
Finally, to make this easier and push everything from the ring buffer to a file, we would need to create a batch gdb file script to invoke the commands for us.
As an example name that file test.gdb
and add the following to entries
to it, making sure to adjust the path for the python script.
source /path/to/flight_rec.py
display_flight_rec
Then run the following commands to dump the contents of the ring buffer straight to a file:
$ gdb --batch --command=/path/to/test.gdb -q /path/to/test/weston/binary --core /path/to/coredump &> dump.log.txt