Parch

Debugging & profiling

GUI apps on Wayland

# GTK: enable interaction and logging
$ GDK_DEBUG=all GTK_DEBUG=interactive ./parch-hello

# Qt: category logging
$ QT_LOGGING_RULES="qt.waylandclient.debug=true" ./myapp

# Raw Wayland protocol trace (heavy; use for window/surface issues)
$ WAYLAND_DEBUG=1 ./myapp 2> wayland.log

The GTK inspector (GTK_DEBUG=interactive) shows the widget tree, style classes, and accessibility roles at runtime; it is the fastest way to see why a widget is not themed or not announced to screen readers.

Crashes

$ coredumpctl list                  # what crashed, when
$ coredumpctl info <pid>            # backtrace
$ coredumpctl gdb <pid>             # into gdb with the core loaded

Debug symbols come from the *-debug packages (debuginfod is configured by default on Arch-based systems; DEBUGINFOD_URLS covers Arch repos).

Performance

$ perf record -g ./app && perf report     # CPU profiles
$ valgrind --tool=massif ./app            # heap growth over time
$ heaptrack ./app                          # allocation hotspots (GUI friendlier)

Budgets and the methodology are in performance & hardware.

System-level debugging

$ journalctl -b -p err               # this boot's errors, all services
$ journalctl -u <unit> -f            # follow a unit
$ systemctl --failed                 # failed units, first stop after boot issues
$ systemd-analyze blame              # slow boot units

For live-environment problems, boot with the ISO's debug options (see testing an ISO) and capture the journal before removing media.

Reporting bugs that get fixed

A report with the exact command, the full output, the package versions, and (for GUI issues) a Wayland/X11 note and the desktop edition gets fixed. A report saying "it does not work" gets questions. Capture first, describe second.