Wie teste / debugge ich GNOME Shell-Erweiterungen? Gibt es dafür ein Werkzeug?

72

Ich möchte GNOME-Shell-Erweiterungen entwickeln und fand es sehr einfach, in den Entwicklungsprozess einzusteigen, aber ich kann immer noch nicht herausfinden, wie ich meine Erweiterungen effektiv debuggen / testen kann.

Gibt es Werkzeuge für diesen Zweck? Gibt es eine Echtzeitkonsole, wie wir sie in modernen Browsern oder Javascript-Serverumgebungen haben?

Marcio
quelle

Antworten:

72

Ja, die Echtzeitkonsole heißt "Looking Glass" und kann durch Drücken von Alt+ F2und Eingeben lgan der Eingabeaufforderung gestartet werden .

Weitere Informationen: https://live.gnome.org/GnomeShell/LookingGlass

Ptomato
quelle
1
Nur ein kleiner Zweifel an der LookingGlass: Ich habe global.log('hello world');in meiner Erweiterung eine Schleife eingefügt, aber in der Konsole wurde nichts protokolliert. Können die Erweiterungen Nachrichten nicht programmgesteuert protokollieren?
Marcio
1
Ich habe schon die Antwort bekommen. Es wird ordnungsgemäß protokolliert, aber Sie müssen die Gnome-Shell-Umgebung nach jeder Aktualisierung in den Skripten neu laden (<kbd> Alt </ kbd> + <kbd> F2 </ kbd> und Typ r).
Marcio
Wissen Sie, warum LG nicht über die Befehlszeile funktioniert? !!! arbeiten mit alt + f2 aber nicht vom terminal!
Pipo
Es ist keine ausführbare Datei, die Sie über die Befehlszeile aufrufen können. Es ist spezifisch für die GNOME-Shell.
Ptomato
1
Ich habe das gleiche Problem wie @marcio. Erweiterungsprotokollmeldungen werden in lg nicht angezeigt, aber ich habe die Shell bereits neu gestartet. Wie kann ich eine Nachricht in einer Gnome-Shell-Erweiterung drucken und dann sehen?
Paul
44

Unter Fedora 20 (und wahrscheinlich jeder neuen Linux-Distribution) können Sie diesen Befehl verwenden:

journalctl /usr/bin/gnome-session -f -o cat

Es gibt ständig ( -f) Fehler aus, die von gnome-session im Terminalfenster generiert wurden. Ich bevorzuge -o catFlag, da es vollständige Nachrichten ohne Zeitstapel anzeigt.

Ich glaube, Fedora 22 wurde ersetzt durch:

journalctl /usr/bin/gnome-shell -f -o cat
jsnjack
quelle
2
Dies ist viel besser als gnome-shell --replaceda id keine Gnome-Shell-Sitzung an ein Terminal
anfügt
1
Auf Ubuntu Wokrs auch
Toni Chaz
21

Spiegel ist großartig. Wenn Sie jedoch eine gerade Konsole benötigen, können Sie eine bekommen, jedoch nicht über LG, zumindest nicht ab 3.6.

Wenn Sie ein Terminal öffnen und eingeben gnome-shell --replace, wird die Gnome-Shell von dort ausgeführt und ersetzt die laufende Instanz. Anschließend wird die globale Protokollausgabe in dieser Konsole angezeigt.

Sie können es mit Looking Glass testen, indem Sie Alt- F2 lgund dann global.log("foo")auf der Registerkarte "Evaluator" ausführen.

Geoff
quelle
1
Als ich die Gnome-Shell nach dem Ansatz abbrach, fror bis auf meine Maus alles ein. Ich musste meinen Computer hart neu starten, damit er wieder funktioniert.
EndangeredMassa
2
Das liegt daran, dass Sie Ihre einzige Instanz von Gnome-Shell getötet haben. Anstatt es zu töten, C-cwenn Sie fertig sind C-z, drücken Sie, um es auszusetzen. bg<CR>Geben Sie dann in die Konsole ein (möglicherweise sehen Sie nicht, was Sie eingeben, wenn Sie diesen Befehl eingeben), und die Gnome-Shell wird im Hintergrund ausgeführt. Führen Sie als Nächstes aus, disown <Tab><CR>um den Prozess vom Terminalfenster zu trennen. Anschließend können Sie das Terminalfenster sicher schließen.
Shrikant Sharat
8

Ich bevorzuge Lesen ~/.xsession-errorsund ~/.cache/gdm/session.logDateien für mehr Details. Einige der Fehlermeldungen haben möglicherweise eine Beziehung zu anderen Ausnahmen oder Fehlern.

The_Cute_Hedgehog
quelle
8
@ User231371 möchte darauf hinweisen: In Ubuntu gnome befindet sich das Protokoll in ~ / .cache / upstart / gnome-session.log.
Erick Robertson
5

Die anderen Antworten haben bei der Entwicklung meiner eigenen Erweiterung nicht wirklich funktioniert. Was jedoch geschah, war:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat 

Wenn Sie die Ausgabe auflösen möchten, um nur Ihre App zu sehen, können Sie Folgendes verwenden:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat | grep [myAppId]

Wenn Sie auch mit der oben beschriebenen Methode auf Nicht-Fehlerprotokolle zugreifen möchten, können Sie Folgendes verwenden:

global.log('[myAppId]', valueToLog);

Wenn Sie den richtigen Pfad zu Ihrer Gnome-Sitzung nicht kennen, können Sie auch Folgendes verwenden:

journalctl -f | grep gnome-session

Warum es nicht funktionierte, liegt wahrscheinlich daran, dass mein gnome-session-binary-Pfad anders war, was möglicherweise mit einer neueren Version von gnome zusammenhängt, die installiert wird.

hugo der hungrige
quelle
1
Auf Fedora 26 ist der richtige Pfad /etc/libexec/gnome-session-binary.
Akaihola
1
Allerdings global.log()Nachrichten auftauchen nicht in journalctlAusgabe, noch in Looking Glass. Ist die Abmeldung bei Fedora 26 möglicherweise standardmäßig deaktiviert?
Akaihola
2
Stattdessen Protokollmeldungen haben in aufkreuzen journalctl /usr/bin/gnome-shell.
Akaihola
4

Ich kann noch keine anderen Antworten kommentieren, also dachte ich, ich würde hinzufügen - wie spät es auch sein mag:

  • Für Kommentar 2 von Geoffs Antwort starten Sie die Shell einfach neu über alt+f2- rund dann enter, wenn dies passiert - wird die vom Terminal ausgeführte Sitzung automatisch beendet (zumindest unter Debian).

  • Ich würde jsnjacks Antwort für das allgemeine Debuggen empfehlen, das auch mit Debian Jessy funktioniert. wahrscheinlich will sudodas aber. Es werden Gnome-Fehler sowie global.log () - Nachrichten in dem Terminal angezeigt, in dem Sie es ausführen.

Wenn überhaupt, bietet dies eine vollständigere Referenz für mich - da ich beim Verweisen auf Informationen mehr als einmal auf diese Seite gestoßen bin, halte ich mich nicht auf dem Laufenden.

Rik
quelle
3

Anjuta Dev-Studio ist ein großartiges Tool für die Arbeit mit Gnome-Shell-Erweiterungen. Es ist mit einem Debugger, einem GUI-Designer, einer Versionskontrolle und vielem mehr ausgestattet. Es gibt sogar ein geführtes Tutorial für die Verwendung von Anjuta mit Gnome-Shell-Erweiterungsprojekten auf den Wiki-Seiten von Gnome

ILMostro_7
quelle
Wie funktioniert der Debugger? Anjuta führt die Erweiterung nicht einmal intuitiv aus, sondern druckt nur Fehler. Und der Wiki-Link sagt nichts über Anjuta aus, außer dass es existiert und zu empfehlen, es nicht zu benutzen!
JDK1.0
Ich bin mir nicht sicher, ob sich die Seite geändert hat. Sie können andere relevante Seiten für die Arbeit mit dem Debugger in Anjuta überprüfen. zB developer.gnome.org/anjuta-manual/stable/debug-tips.html.de
ILMostro_7
3

Wir entwickeln hier ein Emacs-Paket für die Entwicklung von Gnome-Shell-Erweiterungen: https://github.com/paperwm/gnome-shell-mode

Es ist noch in der "Beta" (Dezember 2017), aber es ist bereits sehr nützlich.

Eigenschaften

  • Autovervollständigung (viel besser als das, was Spiegel bietet)
  • Auswertung von Zeile, Auswahl, aktueller Funktion, Puffer (optional wird das Ergebnis in einem Kommentar in den Puffer eingefügt)
  • Fehlerhighlight beim Auswerten
  • Dokumentationssuchhilfe
  • Helfer beim erneuten Laden des Moduls, an dem Sie arbeiten, ohne gnome-shell neu zu starten
olejorgenb
quelle