我想开发 GNOME Shell 扩展,发现进入开发过程真的很容易,但我仍然不知道如何有效地调试/测试我的扩展。
有没有为此目的的工具?有没有像现代浏览器或 JavaScript 服务器环境那样的实时控制台?
我想开发 GNOME Shell 扩展,发现进入开发过程真的很容易,但我仍然不知道如何有效地调试/测试我的扩展。
有没有为此目的的工具?有没有像现代浏览器或 JavaScript 服务器环境那样的实时控制台?
是的,实时控制台称为“Looking Glass”,可以通过按Alt+F2并lg
在提示符处键入来启动。
在 Fedora 20(可能还有任何新的 linux 发行版)上,您可以使用该命令:
journalctl /usr/bin/gnome-session -f -o cat
它不断(-f
)在终端窗口中打印由 gnome-session 生成的错误。我更喜欢-o cat
标志,因为它显示没有时间戳的完整消息。
我相信在 Fedora 22 上,它被替换为:
journalctl /usr/bin/gnome-shell -f -o cat
镜子很棒。但是,如果您需要一个直接的控制台,您可以得到一个,但不是通过 LG,至少从 3.6 开始不是。
如果您弹出一个终端并键入gnome-shell --replace
, gnome-shell 将从那里运行,替换正在运行的实例,然后全局日志输出将出现在该控制台中。
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 有关。
我还不能对其他答案发表评论,所以我想补充一下——不管它可能有多晚:
对于 Geoff 的回答的评论 2,只需通过alt+f2
- thenr
和重新启动 shell enter
,当这种情况发生时 - 终端运行会话将自动结束(至少在 Debian 上)。
我推荐 jsnjack 的一般调试答案,它也适用于 Debian Jessy;可能想要sudo
那个。它会在您运行它的任何终端中显示 gnome 错误以及 global.log() 消息。
如果有的话,这为我提供了一个更完整的参考 - 因为我在参考信息时不止一次地遇到过这个页面,我不会在我的记忆中保持新鲜。
Anjuta Dev-Studio 是使用 gnome-shell 扩展的绝佳工具;它配备了调试器、GUI 设计器、版本控制等。在 gnome 的wiki 页面上甚至还有一个使用 Anjuta 和 gnome-shell 扩展项目的指导教程
我们正在开发一个针对 gnome-shell 扩展开发的 emacs 包:https ://github.com/paperwm/gnome-shell-mode
它仍处于“测试版”(2017 年 12 月),但它已经非常有用了。
特征