Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
xfce:xfce4-panel:debugging [2012/01/18 14:40] – nick | xfce:xfce4-panel:debugging [2019/08/05 07:45] – formating links into list. grammar improvement kevinbowen |
---|
====== Debugging ====== | ====== Debugging ====== |
| |
The Xfce Panel has a number of tools to create good [[https://bugzilla.xfce.org|bug reports]]. It can also give some valuable insight for users how the panel works, in case you have problems. | The Xfce Panel has a number of tools to create good [[https://bugzilla.xfce.org|bug reports]]. It can also provide some valuable insight for users into how the panel works, in case you have problems. |
| |
| === See Also === |
| |
| * **[[:contribute:bugs:start]]** -- Information about reporting bugs and generating backtraces. |
| |
| * **[[:xfce:building]]** -- How to compile Xfce from source to provide better debug information. |
===== Debug Logs ===== | ===== Debug Logs ===== |
| |
On startup the panel checks the environment variable ''PANEL_DEBUG''. If you want to test this, you can open a terminal, run ''xfce4-panel -q'' to exit the running instance. Then run ''PANEL_DEBUG=1 xfce4-panel'' and you will see the panel starts to output to //stderr//. | On startup, the panel checks the environment variable ''PANEL_DEBUG''. If you want to test this, you can open a terminal, run ''xfce4-panel -q'' to exit the running instance. Then run ''PANEL_DEBUG=1 xfce4-panel'' and you will see the panel starts to output to //stderr//. |
| |
The messages look like ''xfce4-panel (<module>): <some message>''. It will print all sorts of information about panel positioning, plugins that are started, etc. | The messages look like ''xfce4-panel (<module>): <some message>''. It will print all sorts of information about panel positioning, plugins that are started, etc. |
===== Debugging Plugins ===== | ===== Debugging Plugins ===== |
| |
If an external plugin crashed, the panel will automatically restart it or ask the user what to do if the plugin crashed more then once within 60 seconds. Nonetheless we all know this should never happen, so the panel provides tools to help debugging plugins. | If an external plugin crashed, the panel will automatically restart it or ask the user what to do if the plugin crashed more then once within 60 seconds. Nonetheless, we all know this should never happen, so the panel provides tools to help debugging plugins. |
| |
==== GDB ==== | ==== GDB ==== |
If you start the panel with ''PANEL_DEBUG=gdb'' and [[http://www.gnu.org/software/gdb/|gdb]] is installed on your computer, all external plugins will be started in gdb. The output of //gdb// is written to ''/tmp/<stamp>_gdb_<plugin-name>_<plugin-id>.log''. If the plugin segfaults, it will automatically create a //backtrace full// and dump //info registers//. | If you start the panel with ''PANEL_DEBUG=gdb'' and [[http://www.gnu.org/software/gdb/|gdb]] is installed on your computer, all external plugins will be started in gdb. The output of //gdb// is written to ''/tmp/<stamp>_gdb_<plugin-name>_<plugin-id>.log''. If the plugin segfaults, it will automatically create a //backtrace full// and dump //info registers//. |
| |
This does not mean the output contains valuable information. For good backtraces it is still recommended to create a debug-build of the plugin. | This does not mean that the output contains valuable information. For good backtraces, it is still recommended to create a debug-build of the plugin. |
| |
==== Valgrind ==== | ==== Valgrind ==== |
| |
To detect memory leaks and corruptions, it is also possible to run plugins in [[http://valgrind.org/|valgrind]]. For this start the panel with ''PANEL_DEBUG=valgrind''. Logs will be written to the same location as the //gdb// logs. | To detect memory leaks and corruptions, it is also possible to run plugins in [[http://valgrind.org/|valgrind]]. For this, start the panel with ''PANEL_DEBUG=valgrind''. Logs will be written to the same location as the //gdb// logs. |