Logging is controlled by the --debug
(or
-d
) option.
Enable geometry
debugging with a client:
xpra attach -d geometry
Start a seamless server with focus
debugging
enabled:
xpra start -d focus --start=xterm
Use the special category value all
to enable all
logging. (this will be very verbose and should be avoided)
You can also prefix a logging category with a dash "-
" to
disable debug logging for it.
To log everything except the window
and
focus
categories:
xpra start :10 -d all,-window,-focus
Each logging category can also be enabled using environment
variables.
This can be useful if you cannot modify the command line, or if the
logging should happen very early on, or if you aren't calling the code
from its normal wrappers.
to enable "geometry" debugging with the attach
subcommand use:
XPRA_GEOMETRY_DEBUG=1 xpra attach
The full list of categories can be shown using
xpra -d help
, to see this list now, click on:
| Area | Description |
|--------------------------------------|--------------------------------------------------------------------|
| Client: | | | client | all client code | | paint |
client window paint code | | draw | client draw packets processing | |
cairo | calls to the cairo drawing library | | opengl | OpenGL rendering | | info |
About
and Session info
dialogs | | launcher |
client launcher program | | General: | | | clipboard |
all clipboard operations | |
notify | notifications
forwarding | | tray | system
tray forwarding | | printing | printer forwarding | | file | file transfers | | keyboard |
keyboard mapping and key event
handling | | screen | screen and workarea dimensions | | fps | Frames
per second | | xsettings | XSettings synchronization | | dbus | DBUS
calls | | rpc | Remote Procedure Calls | | menu | Menus | | events |
System and window events | | Window: | | | window | all
window code | | damage | X11 repaint events | | geometry | window
geometry | | shape | window shape forwarding (XShape
) | |
focus | window focus | | workspace | window workspace synchronization |
| metadata | window metadata | | alpha | window Alpha channel
(transparency) | | state | window state changes | | icon | window icons
| | frame | window frame | | grab | window grabs (both keyboard and
mouse) | | dragndrop | window drag-n-drop events | | filters | window
filters | | Encoding: | |
| codec | all codecs | | loader | codec loader | | video | video
encoding and decoding | | score | video pipeline scoring and selection |
| encoding | encoding selection and compression | | scaling | picture
scaling | | scroll | scrolling detection and compression | | subregion |
video subregion processing | | regiondetect | video region detection | |
regionrefresh | video region refresh | | refresh | refresh of lossy
screen updates | | compress | pixel compression | | Codec: | | | csc | colourspace
conversion codecs | | cuda | CUDA device access (nvenc) | | cython |
Cython CSC module | | swscale | swscale CSC module | | libyuv | libyuv
CSC module | | decoder | all decoders | | encoder | all encoders | |
avcodec | avcodec decoder | | libav | libav common code (used by
swscale, avcodec and ffmpeg) | | ffmpeg | ffmpeg encoder | | pillow |
pillow encoder and decoder | | jpeg | JPEG codec | | vpx | libvpx
encoder and decoder | | nvenc | nvenc hardware encoder | | nvfbc | nfbc
screen capture | | x264 | libx264 encoder | | webp | libwebp encoder and
decoder | | webcam | webcam access | | Pointer: | | |
mouse | mouse motion | | cursor | mouse cursor shape | |
Misc: | | | gtk | all GTK code: bindings, client, etc |
| util | all utility functions | | gobject | command line clients | |
test | test code | | verbose | very verbose flag | | Network: | | | network | all
network code | | bandwidth | bandwidth detection and management | | ssh
| SSH connections | | ssl | SSL connections | | http | HTTP requests |
| rfb | RFB Protocol | | mmap | mmap transfers | | protocol | packet
input and output | | websocket | WebSocket layer | | named-pipe | Named
pipe | | crypto | encryption | |
auth | authentication | | upnp | UPnP
| | Server: | | | server | all server code | | proxy |
proxy server | | shadow | shadow server | | command | server control
channel | | timeout | server timeouts | | exec | executing commands | |
mdns | mDNS session publishing
| | stats | server statistics | | xshm | XShm pixel capture | |
Audio: | | | audio | all audio | | gstreamer |
GStreamer internal messages | | av-sync | Audio-video sync | |
X11: | | | x11 | all X11 code | | xinput | XInput
bindings | | bindings | X11 Cython bindings | | core | X11 core bindings
| | randr | X11 RandR bindings | | ximage | X11 XImage bindings | |
error | X11 errors | | Platform: | | | platform | all
platform support code | | import | platform support imports | | osx |
MacOS platform support | | win32 | Microsoft Windows platform support |
| posix | Posix platform |
Logging settings can be modified at runtime:
Using the control
channel:
xpra control :DISPLAY debug enable CATEGORY
This can be used to control both servers and clients (using the client's socket path: #2406).
The server can also forward debug control commands to the clients
connected to it using client debug
:
xpra control :DISPLAY client debug enable geometry
You can enable many categories at once:
xpra control :2 debug enable window geometry screen
Or only enable loggers that match multiple categories with
+
:
xpra control :2 debug disable focus+grab
The debug control commands are also available through the server's dbus interface, see #904.
Some subsystems require special environment variables to enable
logging, this is done to minimize the cost of logging in performance
critical paths.
In particular the X11 bindings, as those can process thousands of events
per second.
Log all X11 events:
XPRA_X11_DEBUG_EVENTS="*" xpra start :10
or just specific events:
XPRA_X11_DEBUG_EVENTS="EnterNotify,CreateNotify" xpra start :10