我想进入Gnome Shell的扩展开发,但我似乎无法理解我是如何在Looking Glass lg
中执行一些任务来实际调试我的东西。
global.log("hi");
时,它会将我退回r(...) = undefined
。为什么?Main.ExtensionSystem.loadExtension()
,但无论我是否给它扩展名的字符串或扩展名的对象,它都会返回undefined
。如果我拥有这些资源,我至少可以开始为更新的Gnome版本更新一些扩展。我不会问这些简单的问题,如果他们会在某处得到很好的解释,但获取所有信息似乎非常困难(我已经搜索了几个小时)。
答案 0 :(得分:2)
1:LookingGlass本质上是一个GJS控制台。它使您能够执行和测试GJS行,抓取和操纵对象以及使用r(...)
在以下命令中使用结果。
之所以得到r(...) = undefined
是因为log(String);
不返回任何内容,因此结果为undefined
。
2:要么在init()
和enable()
中记录整个日志,然后检查其中断位置,然后尝试使用日志或注释掉代码行来确定断行(尽管罪魁祸首可能是在常规中定义的)日志记录,如底部的部分所述。
3:没有官方文档。他们为GNOME Shell 3.4提供了一些过时的教程,与3.6的解释略有不同,在您使用的库的C(++)末端有几页(尽管大多数函数,变量和常量使用相同的名称),但是对于任何您需要的真实信息,请深入研究其他GNOME和Shell扩展代码或一些非官方来源。但是,非官方消息来源并不总是最新的。
通常,可以通过多种方式来调试gnome。
-使用log()
函数并在命令行中遵循journalctl,检查GNOME或JS,使用journalctl -f | grep -i js
(或使用grep -i gnome
)。无论如何,您都会看到一些警告,但大多数都提到它们来自什么扩展名。这很好,可以在所有实施systemd的发行版上使用
-或记录journalctl /usr/bin/gnome-session -f -o cat
之类的特定于GNOME的进程,只是要注意某些发行版和版本会记录到不同的文件,而旧的GNOME版本通常会记录到显示管理器记录的内容。
-使用正式的(尽管比较棘手的)日志记录方式:GNOME on debugging。
我个人无法使用此功能。