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

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

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


person marcio    schedule 08.12.2011    source источник


Ответы (8)


Да, консоль реального времени называется «Зазеркалье», и ее можно запустить, нажав Alt+F2 и введя lg в командной строке.

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

person ptomato    schedule 08.12.2011
comment
Небольшое сомнение по поводу LookingGlass: я включил global.log('hello world'); внутри цикла в своем расширении, но в консоли ничего не было зарегистрировано. Разве расширения не могут регистрировать сообщения программно? - person marcio; 08.12.2011
comment
Я уже получил ответ. Он регистрируется правильно, но вам нужно перезагрузить среду оболочки gnome после любого обновления в сценариях (‹kbd›Alt‹/kbd›+‹kbd›F2‹/kbd› и введите r). - person marcio; 09.12.2011
comment
Вы знаете, почему lg не работает из командной строки??!!! работает с alt+f2, но не с терминала! - person Pipo; 17.05.2017
comment
Это не исполняемый файл, который можно вызвать из командной строки. Это специфично для оболочки GNOME. - person ptomato; 17.05.2017
comment
У меня та же проблема, что и у @marcio, сообщения журнала расширений не отображаются в lg, но я уже перезапустил оболочку. Как я могу напечатать сообщение в расширении оболочки gnome, а затем увидеть его? - person Paul; 07.10.2018
comment
Почему бы не открыть для этого новый вопрос? Здесь его мало кто увидит. - person ptomato; 07.10.2018
comment
@Paul и @marcio: у меня была такая же проблема. Просто откройте терминал и введите journalctl -f. После этого вы увидите каждый лог (типа global.log('Test');)), ошибки и так далее в терминале. - person mhellmeier; 07.03.2019
comment
Как вы видите номера строк исходного кода для ошибок? - person jdk1.0; 26.04.2019

В 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
person jsnjack    schedule 31.07.2014
comment
Это намного лучше, чем gnome-shell --replace, поскольку id не привязывает сеанс оболочки gnome к терминалу :) - person marcio; 01.08.2014
comment
На ubuntu тоже работает - person Toni Chaz; 24.06.2017

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

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

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

person Geoff    schedule 26.02.2013
comment
Когда я отменил gnome-shell после использования подхода, все зависло, кроме моей мыши. Мне пришлось сильно перезагрузить машину, чтобы она снова заработала. - person EndangeredMassa; 21.07.2013
comment
Это потому, что вы убили свой единственный экземпляр gnome-shell. Вместо того, чтобы убивать его с помощью C-c, когда вы закончите, нажмите C-z, чтобы приостановить его. Затем введите bg<CR> в консоль (вы можете не видеть, что вы печатаете при вводе этой команды), и тогда gnome-shell запустится в фоновом режиме. Далее запустите disown <Tab><CR> для отсоединения процесса от окна терминала, после чего можете смело закрывать окно терминала. - person Shrikant Sharat; 22.05.2014

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

person The_Cute_Hedgehog    schedule 28.12.2013
comment
@ User231371 хотел бы отметить: в Ubuntu gnome журнал находится в ~/.cache/upstart/gnome-session.log . - person Erick Robertson; 06.01.2014

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

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 был другим, что может быть связано с установленной более новой версией gnome.

person hugo der hungrige    schedule 27.04.2017
comment
В Fedora 26 правильный путь — /etc/libexec/gnome-session-binary. - person akaihola; 02.12.2017
comment
Однако сообщения global.log() не появляются ни в выводе journalctl, ни в Зазеркалье. Возможно, ведение журнала отключено по умолчанию в Fedora 26? - person akaihola; 02.12.2017
comment
Вместо этого сообщения журнала do отображаются в journalctl /usr/bin/gnome-shell. - person akaihola; 02.12.2017

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

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

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

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

person Rik    schedule 20.10.2014


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

Он все еще находится в бета-версии (декабрь 2017 г.), но уже очень полезен.

Функции

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