From Fedora Project Wiki

< KDE

Line 7: Line 7:


== KDE4 () ==
== KDE4 () ==
=== plasma-desktop ===


== KDE5 (F24, F25) ==
== KDE5 (F24, F25) ==

Revision as of 08:36, 26 September 2016

Some loose, partially undocumented, but useful debugging tips and tricks found here and there in discussions, bug comments etc.

General

KDE doesn't like that user's home directory runs out of space. It will start loosing application configurations etc, very unwanted behaviour so always having some free space is recommended.

KDE4 ()

plasma-desktop

KDE5 (F24, F25)

Two main desktop components, kwin_x11 a window manager and desktop's shell - the plasmashell processes that can both be restarted on running desktop, without need to re-login with new session. If krunner process is working on desktop, using ALT+F2 pops up a small command dialog at the top of screen. All commands can be run through that or in separate konsole window(s), where latter allows folloing their character based output as they run.

KDE enviroment variables in Fedora are set system widely in /etc/profile.d/kde.sh - if something needs to be added permanently, that is the right place.


kdebugdialog

kdebugdialog is a gui configuration dialog that is used to switch on/off KDE debugging information. All increased information will be in .xsession-errors file.

kwin_x11

kwin_x11 can be killed or replaced by itself with --replace option. Once its not running, all virtual destkop windows appear at one view. Having a konsole open during replace might be useful. A typical ALT+F2 restart is done in krunner dialog:

kwin_x11 --replace

Some regocnized environment variables:

export KWIN_USE_INTEL_SWAP_EVENT=0 # only affects intel IGPs 
export KWIN_EXPLICIT_SYNC=0 # most likely candidate on nvidia GPUs 
export KWIN_USE_BUFFER_AGE=0 # well, you tried, but hey ... ;-) 

kwin_x11 --replace &


xdotool lets you programatically (or manually) simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11's XTEST extension and other Xlib functions.

For example if screen is locked

xdotool key "XF86LogGrabInfo"

dumbs all device grabs into /var/log/Xorg.0.log file. It can be run from character based consoles by prefixing it with DISPLAY=:0

More debugging tips at KDE:

plasmashell

plasmashell can killed and restarted during the same session. Some of its plugins are known to leak memory and thus it can grow and cause problems in memory footprint wise during long session. Removing plugins one by one might help to pinpoint the problematic one.

gam_server

Sometimes it helps to kill the gam_server process to release odd hangups or when applications wont start from panel buttons. Process can be safely killed, it gets respawned automatically, but running processes might not like it. Once killed, all pending start attempts are executed if the gam_server was the culprit. Sending a SIGUSR2 to running gam_server makes it dump its debugging information into /tmp/gamin_debug_*

kill -s SIGUSER $(pidof gam_server)

DBUS

DBUS can be followed using dbus-monitor, it can be lousy thou and hard to follow. Wireshark has dissector for dbus these days but it doesn't do that good job on it.

dbus-monitor

Certain processes can be queried during their runtime using qdbus

$ qdbus | grep address
org.kde.kaddressbook

$ qdbus org.kde.kaddressbook
/
/KAddressBook
/kaddressbook
/kaddressbook/MainWindow_1
/kaddressbook/MainWindow_1/actions
.
.
$

adding more options gives more information of running process. Some options allow remote controlling process and triggering its methods.

.xsession-errors

Users $HOME/.xsession-errors is the 'standard output and error' of graphic desktop. Most lines are not prefixed with source nor timestamp so it might be hard to understand from which process they're coming from.

Xorg.0.log

System wide X11 log /var/log/Xorg.0.log contains all base windowing system, graphic hardware, user interface like mouse, keyboard, tablet etc related log and error messages. Especially userful if problems are related to display controller's driver.

GDB

$ gdb dolphin
(gdb) set follow-fork-mode child
(gdb) run

See also

External links