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?
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?r
).Unter Fedora 20 (und wahrscheinlich jeder neuen Linux-Distribution) können Sie diesen Befehl verwenden:
Es gibt ständig (
-f
) Fehler aus, die von gnome-session im Terminalfenster generiert wurden. Ich bevorzuge-o cat
Flag, da es vollständige Nachrichten ohne Zeitstapel anzeigt.Ich glaube, Fedora 22 wurde ersetzt durch:
quelle
gnome-shell --replace
da id keine Gnome-Shell-Sitzung an ein TerminalSpiegel 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
lg
und dannglobal.log("foo")
auf der Registerkarte "Evaluator" ausführen.quelle
C-c
wenn Sie fertig sindC-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.Ich bevorzuge Lesen
~/.xsession-errors
und~/.cache/gdm/session.log
Dateien für mehr Details. Einige der Fehlermeldungen haben möglicherweise eine Beziehung zu anderen Ausnahmen oder Fehlern.quelle
Die anderen Antworten haben bei der Entwicklung meiner eigenen Erweiterung nicht wirklich funktioniert. Was jedoch geschah, war:
Wenn Sie die Ausgabe auflösen möchten, um nur Ihre App zu sehen, können Sie Folgendes verwenden:
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:
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.
quelle
/etc/libexec/gnome-session-binary
.global.log()
Nachrichten auftauchen nicht injournalctl
Ausgabe, noch in Looking Glass. Ist die Abmeldung bei Fedora 26 möglicherweise standardmäßig deaktiviert?journalctl /usr/bin/gnome-shell
.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
-r
und dannenter
, 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
sudo
das 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.
quelle
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
quelle
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
quelle