Как проверить / отладить расширения оболочки GNOME? Есть ли какой-нибудь инструмент для этого?

Я хотел бы разработать расширения оболочки GNOME и обнаружил, что действительно легко войти в процесс разработки, но я до сих пор не могу понять, как эффективно отлаживать / тестировать мои расширения.

Есть ли инструменты для этой цели? Есть ли какая-либо консоль в реальном времени, как у нас в современных браузерах или средах javascript-серверов?

8 ответов

Решение

Да, консоль реального времени называется "Looking Glass", и ее можно запустить, нажав Alt+F2 и набрав lg по подсказке.

Дополнительная информация: https://live.gnome.org/GnomeShell/LookingGlass

В Fedora 20 (и, возможно, в любом новом дистрибутиве Linux) вы можете использовать эту команду:

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

Это постоянно (-f) печатает ошибки, сгенерированные gnome-сессией в окне терминала. я предпочитаю -o cat Отметить, как он показывает полные сообщения без отметок времени.

На Fedora 22, я полагаю, его заменили на:

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

Зазеркалье это здорово. Если вам нужна прямая консоль, вы можете получить ее, но не через LG, по крайней мере, с версии 3.6.

Если вы откроете терминал и наберете gnome-shell --replaceОттуда будет запущен gnome-shell, заменив запущенный экземпляр, и после этого в этой консоли появится глобальный вывод журнала.

Вы можете проверить это с помощью Looking Glass, выполнив Alt-F2 lg, а потомglobal.log("foo") на вкладке "Оценщик".

Я предпочитаю читать ~/.xsession-errors а также ~/.cache/gdm/session.log файлы для более подробной информации. Некоторые сообщения об ошибках могут иметь отношение к другим исключениям или ошибкам.

Другие ответы не помогли мне при разработке собственного расширения. Что, однако, было:

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

Если вы хотите обезопасить вывод, чтобы увидеть ваше приложение, вы можете использовать:

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

Если вы также хотите получить доступ к журналам без ошибок, используя описанный выше метод, вы можете использовать:

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

Если вы не знаете правильный путь к вашей сессии gnome, вы также можете использовать:

journalctl -f | grep gnome-session

Почему это не сработало, возможно, из-за того, что мой путь к gnome-session-binary отличался, что может быть связано с установкой более новой версии gnome.

Я пока не могу комментировать другие ответы, поэтому подумал, что добавлю - как бы поздно это ни было:

  • Для комментария 2 ответа Джеффа просто перезапустите оболочку с помощью alt+f2 - затем r а также enter, когда это произойдет - сеанс запуска терминала завершится автоматически (по крайней мере, в Debian).

  • Я бы порекомендовал ответ jsnjack для общей отладки, которая также работает с Debian Jessy; наверное хочешь sudo это хотя. Он покажет ошибки gnome, а также сообщения global.log() в любом терминале, в котором вы его запускаете.

Во всяком случае, это дает мне более полную справку - поскольку я сталкивался с этой страницей не раз, когда ссылаюсь на информацию, я не остаюсь свежим в своей памяти.

Anjuta Dev-Studio - отличный инструмент для работы с расширениями gnome-shell; он оснащен отладчиком, дизайнером графического интерфейса, системой контроля версий и многим другим. На вики-страницах gnome есть даже руководство по использованию Anjuta с проектами расширения оболочки gnome.

Мы разрабатываем пакет emacs для разработки расширений gnome-shell здесь: https://github.com/paperwm/gnome-shell-mode

Это все еще в "бета" (декабрь 2017), но это уже очень полезно.

Характеристики

  • Автозаполнение (намного лучше, чем то, что обеспечивает зеркало)
  • Оценка строки, выделения, текущей функции, буфера (опционально, вставка результата в буфер в комментарии)
  • Выделение ошибки при оценке
  • Помощник по поиску документации
  • Помощник для перезагрузки модуля, над которым вы работаете, без перезапуска gnome-shell
Другие вопросы по тегам