我想开发GNOME Shell扩展,发现进入开发过程确实很容易,但是我仍然不知道如何有效地调试/测试我的扩展。
是否有用于此目的的工具?有没有像现代浏览器或javascript服务器环境中一样的实时控制台?
Answers:
是的,实时控制台称为“ Looking Glass”,可以通过按Alt+F2并lg
在提示符下键入来启动。
r
)之后,您必须重新加载gnome shell环境。
在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
gnome-shell --replace
自从id不会将gnome shell会话附加到终端要好得多:)
窥镜很棒。但是,如果您需要一个直立的控制台,则可以通过LG获得一个,但至少不能从3.6开始。
如果弹出一个终端并输入gnome-shell --replace
,将从那里运行gnome-shell,替换正在运行的实例,然后全局日志输出将显示在该控制台中。
您可以通过Alt- F2 lg
,然后global.log("foo")
在“评估程序”选项卡中,使用Looking Glass进行测试。
C-c
完成后,您无需将其杀死,而是单击C-z
以将其暂停。然后键入bg<CR>
控制台(键入此命令时可能看不到正在键入的内容),然后gnome-shell将在后台运行。接下来,运行disown <Tab><CR>
以从终端窗口中分离该过程,然后您可以安全地关闭终端窗口。
我更喜欢阅读 ~/.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有关。
/etc/libexec/gnome-session-binary
。
global.log()
消息不会在journalctl
输出中显示,也不会在Looking Glass中显示。是否可能在Fedora 26上默认注销?
journalctl /usr/bin/gnome-shell
。
我们在这里开发针对gnome-shell扩展开发的emacs软件包:https : //github.com/paperwm/gnome-shell-mode
它仍处于“测试版”(2017年12月)中,但它已经非常有用。
特征
global.log('hello world');
在扩展程序中包含了一个循环,但未在控制台中记录任何内容。扩展不能以编程方式记录消息吗?