ubuntuusers.de

Debugging

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

snap bietet einige Tools für das Debugging von snaps.

Debugging

Zur Fehlersuche und zum Debuggen von snaps dienen im wesentlichen die folgenden beiden Befehle[1]:

snap debug BEFEHL [OPTION]
snap run OPTION NAMES_DES_SNAPS 

Je nach Befehl muss der Aufruf ggf. mit Root-Rechten[2] erfolgen.

Netzwerkverbindung prüfen

Ob snapd eine Netzwerkverbindung hat und der zentrale Server zum Herunterladen von snaps erreichbar ist kann über

snap debug connectivity 

erfolgen. Wenn alle in Ordnung ist lautet die Ausgabe

Connectivity status:
 * PASS

Status unter Umgehung des REST-API von snapd prüfen

Die Kommunikation mit snap bzw. genau genommen dem Hintergrunddienst snapd erfolgt über eine REST API. Diese muss man normalerweise als Nutzer nicht direkt abfragen, Details hierzu sind in der snapd Dokumentation 🇬🇧 zu finden. Sollte snapd Probleme machen oder ggf. gar erreichbar sein, kann man die REST API umgehen und die letzten Änderungen auch direkt abfragen. Der Befehl dazu lautet:

sudo snap debug state /var/lib/snapd/state.json 

Beispielausgabe:

ID   Status  Spawn                Ready                Label         Summary
185  Done    heute um 11:29 CEST  heute um 11:29 CEST  install-snap  Installiere "mosquitto" Snap
186  Done    heute um 12:03 CEST  heute um 12:04 CEST  install-snap  Installiere "lxd" Snap

Die Ausgabe entspricht dem, was snap changes normalerweise liefert. Man kann so auch Details zu einer Änderung abfragen, wie z.B.:

sudo snap debug state /var/lib/snapd/state.json --change 185 

Ausgabe:

Lanes  ID    Status  Spawn                Ready                Kind                 Summary
0      4234  Done    heute um 11:29 CEST  heute um 11:29 CEST  prerequisites        Sicherstellen, dass die Voraussetzungen für "mosquitto" verfügbar sind
0      4235  Done    heute um 11:29 CEST  heute um 11:29 CEST  download-snap        Snap "mosquitto" (831) von Kanal "stable" herunterladen
0      4236  Done    heute um 11:29 CEST  heute um 11:29 CEST  validate-snap        Zusicherungen für Snap "mosquitto" (831) abrufen und überprüfen
0      4237  Done    heute um 11:29 CEST  heute um 11:29 CEST  mount-snap           Snap "mosquitto" (831) einbinden
0      4238  Done    heute um 11:29 CEST  heute um 11:29 CEST  copy-snap-data       Daten von Snap "mosquitto" kopieren
0      4239  Done    heute um 11:29 CEST  heute um 11:29 CEST  setup-profiles       Sicherheitsprofile für Snap "mosquitto" (831) einrichten
0      4240  Done    heute um 11:29 CEST  heute um 11:29 CEST  link-snap            Snap "mosquitto" (831) für das System verfügbar machen
0      4241  Done    heute um 11:29 CEST  heute um 11:29 CEST  auto-connect         Automatisches Verbinden von geeigneten Plugs und Slots von Snap "mosquitto"
0      4250  Done    heute um 11:29 CEST  heute um 11:29 CEST  connect              mosquitto:network mit snapd:network verbinden
0      4251  Done    heute um 11:29 CEST  heute um 11:29 CEST  connect              mosquitto:network-bind mit snapd:network-bind verbinden
0      4249  Done    heute um 11:29 CEST  heute um 11:29 CEST  setup-profiles       Einrichten der Sicherheitsprofile für Autoverbindungen des Snaps "mosquitto"  (831)
0      4242  Done    heute um 11:29 CEST  heute um 11:29 CEST  set-auto-aliases     Automatisch Aliase für Snap "mosquitto" festlegen
0      4243  Done    heute um 11:29 CEST  heute um 11:29 CEST  setup-aliases        Aliase für Snap "mosquitto" einrichten
0      4244  Done    heute um 11:29 CEST  heute um 11:29 CEST  run-hook             Installationshook von Snap "mosquitto" ausführen, falls vorhanden
0      4245  Done    heute um 11:29 CEST  heute um 11:29 CEST  run-hook             Run default-configure hook of "mosquitto" snap if present
0      4246  Done    heute um 11:29 CEST  heute um 11:29 CEST  start-snap-services  Snap "mosquitto" (831) Dienste starten
0      4247  Done    heute um 11:29 CEST  heute um 11:29 CEST  run-hook             Den Konfigurationshook von Snap "mosquitto" ausführen, falls vorhanden
0      4248  Done    heute um 11:29 CEST  heute um 11:29 CEST  run-hook             Run health check of "mosquitto" snap

Über

sudo snap debug state /var/lib/snapd/state.json --connections 

lassen sich so auch vorhandene Verbindungen zwischen snaps, die Slots und Plugs abgefragt werden.

snap debug state kennt noch eine Reihe weiterer Möglichkeiten, die man sich über snap debug state -h anzeigen lassen kann.

detailliertes Debugging von snaps

Wer Probleme mit einer snap Applikation hat, kann sich tiefergehende Informationen zwecks Debuging anzeigen lassen. Dies ist bei normaler Nutzung von funktionierenden snaps aber in der Regel selten bis nie notwendig.

Mit

snap run --trace-exec NAMES_DES_SNAPS 

kann man sich anzeigen lassen, was beim Starten des snaps passiert und was wie lange dauert. Beispiel

snap run --trace-exec thunderbird 

Gtk-Message: 16:58:02.597: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it.

(thunderbird:16830): Gtk-WARNING **: 16:58:02.670: GTK+ module /snap/thunderbird/371/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.
Gtk-Message: 16:58:02.670: Failed to load module "canberra-gtk-module"

(thunderbird:16830): Gtk-WARNING **: 16:58:02.672: GTK+ module /snap/thunderbird/371/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.
Gtk-Message: 16:58:02.672: Failed to load module "canberra-gtk-module"
[GFX1-]: glxtest: libpci missing
ATTENTION: default value of option mesa_glthread overridden by environment.
/usr/share/libdrm/amdgpu.ids: No such file or directory
ATTENTION: default value of option mesa_glthread overridden by environment.
Slowest 10 exec calls during snap run:
  0.022s /snap/snapd/20092/usr/lib/snapd/snap-confine
  0.014s /usr/bin/chmod
  0.010s /usr/bin/realpath
  0.238s /snap/thunderbird/371/snap/command-chain/desktop-launch
  0.021s /snap/thunderbird/371/bin/gpg-shim
  0.017s /snap/thunderbird/371/bin/tmpdir
  0.011s /usr/bin/snapctl
  0.075s /snap/thunderbird/371/glxtest
  0.035s /snap/thunderbird/371/pingsender
  0.034s /snap/thunderbird/371/pingsender
Total time: 30.694s

Bei Programmen, die im Vordergrund laufen, wie z.B. normale Anwendungen, erfolgt die Ausgabe von Slowest 10 exec calls during snap run: erst, wenn das Programm wieder beendet wird. Die letzte Zeile der Ausgabe Total time gibt an, wie lange das Programm geöffnet war.

Der Befehl

snap run --strace NAME_DES_SNAPS 

ruf das snap direkt mit strace auf. Die (unter Umständen) sehr vielen Informationen, was gerade passiert, werden direkt im Terminal ausgegeben. Man kann strace Optionen mitgeben. Dazu verwendet man --strace='OPTIONEN', also z.B. --strace='-c'.

Der Befehl

snap run --gdb NAMES_DES_SNAPS 

ruft das Programm mit dem GNU Debugger auf und wechselt in die interaktive GDB-Shell, sobald der erste Abfangpunkt erreicht ist.

Diese Revision wurde am 25. Oktober 2023 12:49 von DJKUhpisse erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: snap, System, Paketverwaltung