如何使用GNOME的镜子?

时间:2013-01-26 18:17:52

标签: debugging gnome-shell gnome-shell-extensions looking-glass

我想进入Gnome Shell的扩展开发,但我似乎无法理解我是如何在Looking Glass lg中执行一些任务来实际调试我的东西。

  1. 当我在LG中输入global.log("hi");时,它会将我退回r(...) = undefined。为什么?
  2. 当我想调试未加载的扩展时,我该怎么做? 很高兴看到无法加载扩展的原因 我尝试了Main.ExtensionSystem.loadExtension(),但无论我是否给它扩展名的字符串或扩展名的对象,它都会返回undefined
  3. 我在哪里可以找到类,对象和成员方法的文档? (LG检查员似乎无法检查功能。)
  4. 如果我拥有这些资源,我至少可以开始为更新的Gnome版本更新一些扩展。我不会问这些简单的问题,如果他们会在某处得到很好的解释,但获取所有信息似乎非常困难(我已经搜索了几个小时)。

1 个答案:

答案 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扩展代码或一些非官方来源。但是,非官方消息来源并不总是最新的。

  • Up to date generated docs at RooJS,尽管至少事件是关闭的,因为它们用-(减号)而不是_(下划线)分隔。
  • Old, but mostly useful documentation,MathematicalCoffee具有更多有用的功能,例如深入解释的代码,这是一个扎实的学习资源。
  • Generated docs, almost everything is there,范围很广,但有时该网站会离线几天。您可以尝试克隆git repo以便在本地运行它,但是readme.md是他们分叉的内容的逐字记录...
  • More recent reference made by a user,尽管功能相当广泛,但如果您使用的是旧版本的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。 我个人无法使用此功能。