|
ddd |
|
If you want to help developers fixing bugs that crash the dock, the best is to compile the latest revision of the dock from the source in BZR and then produce a backtrace.
Installing debug symbols - For Ubuntu users, you just need to add our Weekly ppa (or our ppa for stable versions but it's maybe better for us to install the version from the "weekly" ppa), and install this packages : cairo-dock-core-dbg libgldi3-dbg cairo-dock-plug-ins-dbg cairo-dock-plug-ins-integration-dbg. You can also use directly this command in a terminal :
sudo apt-get install gdb cairo-dock-core-dbg libgldi3-dbg cairo-dock-plug-ins-dbg cairo-dock-plug-ins-integration-dbg (Note: for Debian users, you can also add our repository for stable versions and install the same packages)
- For Debian users and Ubuntu users if you want to compile the dock or in case we ask you, the compilation is made very easy thanks to this script.
- For Fedora users, you just need to install the 2 debuginfo packages provided on our repository.
- For other distributions that can take more time, but all the commands and explanations are give on the same page => From BZR. Don't forget to add the debug symbols with this command CMake :
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug
- For ArchLinux users, if you're using cairo-dock-*-bzr packages from AUR, editing the PKGBUILD (core and plug-ins) for the option to CMake is not enough. Momentarily, you need to remove the option "strip" in /etc/makepkg.conf (OPTIONS=(strip (...)) or add "options=(debug !strip)" at the beginning of both core and plugins' PKGBUILDs. If you're using packages from Community repos, please have a look here.
Backtrace
Terminal Method GDB: It can be interesting to have a full backtrace but you have to use a terminal and a few commands. If you're able to do that, don't hesitate to add these informations to the bug report!
So... first install gdb package (which should be in your repository or other overlays, etc.)
Then, simply launch these commands and post the content of the gdb.txt file located in your home directorycd
gdb cairo-dock
#> now you're in the gdb prompt
run
#> if you want to launch the dock with arguments, you can add them after 'run', e.g: to launch the dock without OpenGL backend: 'run -c'
#> simply reproduce the crash (or see the note below if you don't have a crash)
set logging on
l
bt full
#> then press Enter until the end of the backtrace
info frame
info registers
x/16i $pc
thread apply all bt full
#> then press Enter until the end of the backtrace
quit This file has been created in your home directory: gdb.txt
To read:
Note: if you have a bug with an infinite loop (e.g. the dock consumes 100% of one CPU), instead of 'reproducing the crash', simply reproduce the bug and then press this shortkey 'Ctrl+C' in your terminal's window. Then you can enter other commands (set logging on, etc.)
Graphic Method Bare in mind that it's more interesting for us to work with a full backtrace. So, if your are able to use commands in a terminal, you can directly jump to the part about GDB.
- Install the light software ddd (which should be in your repository or other overlays, etc.)
- Then, run Cairo-Dock using this command (in a terminal or with a shortcut like Alt+F2):
- In DDD, Click on the button 'Run' (or Program / Run or the shortcut 'F2')
- Reproduce the crash.
- Finally, create a screenshot of ddd Status/Backtrace Windows (enlarged if needed) and give us a link toward this image on the forum.
- For upload, there are servers like uppix.net, imageshark.us, etc. or you simply use our DND2Share applet.
What you should do after ? - When the bug is fixed :
- If you had installed Debug packages (Ubuntu or Debian), you can remove these, which are now no longer needed :
sudo apt-get purge cairo-dock-core-dbg libgldi3-dbg cairo-dock-plug-ins-dbg cairo-dock-plug-ins-integration-dbg
- You can return to the previous version too, but the bug will be not fixed...
. However, if a stable version is coming, it is better to use packages of your distribution, in order to be always up to date with stable versions.
- If the Weekly PPA was added, you can de-activate it and eventually return to previous versions thanks to the synaptic software.
- If the dock was compiled with the script, you can remove it with this command:
cd /opt/cairo-dock_bzr
./cairo-dock_bzr.sh (use option 3 for removing - don't forget to reinstall the dock with our PPA).
- Or, for other distributions, use this command (running in compilation's directory) Then, use a previous version (reinstall with our PPA or other).
- Or continue to use Weekly PPA or a compiled dock (up to date with the script or a bzr command)
Backtrace example with ddd :

A crash only at startup? You will have to launch gdb at startup and give to it commands in a file that it will have to use:
- Create a text file and fill it with gdb instructions to launch the application and give to you a backtrace if there is a crash.
- Or, simply launch this command
echo "r
set logging on
l
bt full
info frame
info registers
x/16i \$pc
thread apply all bt full
quit
y" > ~/gdb_commands.txt
- Now you can temporally remove the launch of Cairo-Dock at startup (by using a tool of your desktop environment in order to manage apps launched at startup) and add a new entry with this command in order to launch it at startup:
gdb -x ~/gdb_commands.txt cairo-dock Note: if you're using our Cairo-Dock session, you need to override the current launcher: mkdir -p ~/.config/autostart/
cp /usr/share/applications/cairo-dock.desktop ~/.config/autostart/ Then edit this file ~/.config/autostart/cairo-dock.desktop by replacing the line with Exec by:Exec=gdb -x ~/gdb_commands.txt cairo-dock (or use the tool of your DE)
- If you've a crash (or no dock at startup), this file should be available on your home directory: gdb.txt. Thanks to send the content to us ;)
|
|