Skip to content

Latest commit

 

History

History
224 lines (199 loc) · 15.4 KB

Logging.md

File metadata and controls

224 lines (199 loc) · 15.4 KB

Logging

Logging is controlled by the --debug (or -d) option.

Examples

Enable geometry debugging with a client:

xpra attach -d geometry

Start a seamless server with focus debugging enabled:

xpra start -d focus --start=xterm

Logging Categories

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.

example

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.

example using an environment variable

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:

complete list of categories
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
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

Runtime changes

Logging settings can be modified at runtime:

via the control subcommand

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 server's dbus interface

The debug control commands are also available through the server's dbus interface, see #904.


Extra Detailed Logging

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