如何测试/调试 GNOME Shell 扩展? 有这方面的工具吗?

我想开发 GNOME Shell 扩展,发现进入开发过程真的很容易,但我仍然不知道如何有效地调试/测试我的扩展。

有什么工具可以做到这一点吗?在现代浏览器或 javascript 服务器环境中是否有类似的实时控制台?

41080 次浏览

是的,实时控制台被称为“窥镜”,可以通过按 Alt + F2并在提示符下键入 lg来启动。

更多信息: https://live.gnome.org/GnomeShell/LookingGlass

窥镜很棒。如果你需要一个直接的控制台,虽然,你可以得到一个,但不通过 LG,至少不是在3.6。

如果您弹出打开一个终端并键入 gnome-shell --replace,gnome-shell 将从那里运行,替换正在运行的实例,然后全局日志输出将出现在控制台中。

你可以通过做 Alt-F2 lg,然后在“评估者”选项卡中的 global.log("foo")来用窥镜测试它。

我更喜欢阅读 ~/.xsession-errors~/.cache/gdm/session.log文件的更多细节。一些错误消息可能与其他异常或错误有关。

在 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

我还不能对其他答案发表评论,所以我想补充一句——不管现在有多晚:

  • 对于 Geoff 回答的注释2,只需通过 alt+f2重新启动 shell-然后是 renter,当这种情况发生时-终端运行会话将自动结束(至少在 Debian 上)。

  • 对于通用调试,我推荐 jsnjack 的答案,它也适用于 DebianJessy; 不过可能希望使用 sudo。它将显示 gnome 错误,以及在运行它的终端中的 global.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 有关。

我们正在开发一个 emacs 包,目标是 gnome-shell 扩展开发: https://github.com/paperwm/gnome-shell-mode

它仍处于“测试阶段”(2017年12月) ,但已经非常有用了。

特征

  • 自动完成(远远好于镜子所提供的)
  • 行的 Eval、选择、当前函数、缓冲区(可选地将结果粘贴到注释中的缓冲区中)
  • 计算时的错误高亮
  • 文档查找助手
  • 无需重新启动 gnome-shell 就可以重新加载正在处理的模块的帮助程序