Как проверить / отладить расширения оболочки 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