我想涉足 Gnome Shell 的扩展开发,但我似乎无法理解如何在 Looking Glass
lg
中执行一些任务来实际调试我的东西。
global.log("hi");
时,它会让我返回 r(...) = undefined
。为什么?Main.ExtensionSystem.loadExtension()
但无论我给它扩展的名称字符串还是扩展的对象,它都会返回 undefined
。如果我拥有这些资源,我至少可以开始为较新的 Gnome 版本更新一些扩展。如果这些“简单”的问题能在某个地方得到很好的解释,我不会问这些问题,但获取所有信息似乎真的很困难(我已经用谷歌搜索了几个小时)。
r(...)
在以下命令中使用结果。 你得到
r(...) = undefined
的原因是因为 log(String);
没有返回任何内容,因此结果是 undefined
。2:要么记录整个 init()
和
enable()
,然后检查它中断的位置,并尝试使用日志或注释掉代码行来查明中断行(尽管罪魁祸首可能是在一般日志记录中定义的,在 参考资料 部分中进行了描述)在底部)。3:没有官方文档。他们有一些过时的 GNOME Shell 3.4 教程,与 3.6 的解释略有不同,有几页介绍您使用的库的 C(++) 端(尽管大多数函数、变量和常量使用相同的名称),但是要获得任何真实信息,您需要经验,挖掘其他 GNOME 和 shell 扩展代码或一些非官方来源。然而,非官方来源并不总是最新的。
一般来说,调试 gnome 可以通过多种方式完成。
使用
log()
journalctl -f | grep -i js
(或使用 grep -i gnome
)。无论如何,您都会看到一些警告,但大多数都会提到它们来自哪个扩展。这很好,适用于所有实现 systemd 的发行版或者记录属于 GNOME 一部分的特定进程,例如 journalctl /usr/bin/gnome-session -f -o cat