Providing Backtraces
To ensure the best results and facilitate resolution when reporting segfaults, it is highly recommended that a backtrace be provided. A backtrace is "a summary of how your program got where it is. It shows one line per frame, for many frames, starting with the currently executing frame (frame zero), followed by its caller (frame one), and on up the stack".
This document will provide instructions, some of which may be OS-specific, for generating a file containing the backtrace. Please note that you must have the debug symbols for Budgie Desktop installed on your system. This may already be the case if you built Budgie Desktop yourself, but we provide some OS-specific instructions below.
Debug Symbols
A debug symbol is a special kind of symbol that attaches additional information to the symbol table of an object file, such as a shared library or an executable. This information allows a symbolic debugger to gain access to information from the source code of the binary, such as the names of identifiers, including variables and routines.
In the case of Budgie Desktop, this helps us identify various parts of the Budgie Desktop codebase across its range of components that may affect any issue that requires a backtrace.
- Fedora
- Solus
sudo dnf debuginfo-install budgie-desktop
sudo eopkg install budgie-desktop-dbginfo
GDB
The GNU Project Debugger (GDB) is widely available across various Linux-based operating systems. We recommend using the instructions below for installing the debugger, though if you are familiar with the package manager of the operating system of your choice, typically the package is gdb
and you can install using your package manager's typical installation command(s).
- Arch
- Debian / Ubuntu
- Fedora
- Solus
sudo pacman -S gdb
sudo apt install gdb
sudo dnf install gdb
sudo eopkg install gdb
Generating a Backtrace
First, replace your existing budgie-panel
with one managed by gdb
and pipe the output into the referenced file:
gdb budgie-panel 2&>1 | tee ~/budgie-panel-gdb.txt
Once you're in gdb
, you will be presented with a prompt showing:
(gdb)
Type the following, then press the ENTER / Return key. This should replace your Budgie panel(s).
r --replace
Next, perform the actions required to cause the segfault. You should see something like Thread 1 "budgie-panel" received signal SIGSEGV, Segmentation fault
. Press Enter / Return and you should now see a (gdb)
prompt again.
Type the following, then press the ENTER / Return key. This may provide a considerable backtrace of content.
bt full
Once it is done and you see the (gdb)
prompt, type quit and upload the txt file generated in the bug report. You bring back your budgie panel by opening a Terminal and typing budgie-panel --replace &!
then pressing Ctrl+D
to detach from that process.