14

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

  1. 当我输入global.log("hi");LG 时,它把我扔回去了r(...) = undefined。为什么?
  2. 当我想调试无法加载的扩展时,我该怎么做?
    很高兴看到为什么无法加载扩展。
    我试过了,但无论我给它扩展名字符串还是扩展名对象,Main.ExtensionSystem.loadExtension()它都会返回。undefined
  3. 我在哪里可以找到类、对象和成员方法的文档?
    (LG 检查员似乎无法检查功能。)

如果我有这些资源,我至少可以开始为更新的 Gnome 版本更新一些扩展。如果他们能在某个地方得到很好的解释,我不会问这些简单的问题,但要获得所有信息似乎真的很难(我已经用谷歌搜索了几个小时)。

4

1 回答 1

5

1:LookingGlass 基本上是一个 GJS 控制台。它允许您执行和测试 GJS 的行,抓取和操作对象并用于r(...)在以下命令中使用结果。你得到的原因r(...) = undefined是因为log(String);没有返回任何东西,因此结果是undefined.

2:要么记录整个init()enable(),然后检查它中断的位置,并尝试使用 log 或注释掉代码行来查明断行(尽管罪魁祸首可能在一般日志中定义,在底部的部分中进行了描述)。

3:没有官方文档。他们有一些关于 GNOME Shell 3.4 的过时教程,与 3.6 的解释略有不同,在您使用的库的 C(++) 端有几页(尽管大多数函数、变量和常量使用相同的名称),但是对于您需要经验的任何真实信息,挖掘其他 GNOME 和 shell 扩展代码或一些非官方资源。然而,非官方来源并不总是最新的。

  • 在 RooJS 生成的最新文档,尽管至少事件是关闭的,因为它们用 -(减号)而不是 _(下划线)分隔。
  • 旧的,但最有用的文档,MathematicalCoffee 有更多有用的东西,比如深入解释的代码,它是一个非常可靠的学习资源。
  • 生成的文档,几乎所有东西都在那里,非常广泛,但有时该网站会离线几天。您可以尝试克隆 git repo 以在本地运行它,但 readme.md 是他们分叉的内容的逐字副本......
  • 用户最近的参考,虽然这非常广泛,但如果您使用的是旧版本的 GNOME Shell,它并没有多大用处,因为已弃用和旧版本比下一代产品更有可能工作。我建议您查看官方扩展网站并浏览您可以获得的任何有趣的扩展源代码,因为这是您学习任何东西的最佳选择。

通常调试 gnome 可以通过多种方式完成。- 使用该log()函数并在命令行中遵循 journalctl,检查 GNOME 或 JS,使用journalctl -f | grep -i js(或使用grep -i gnome)。无论如何,您都会看到一些警告,但大多数都会提到它们来自哪个扩展名。这很好,适用于所有实现 systemd 的发行版 - 或者记录作为 GNOME 一部分的特定进程,journalctl /usr/bin/gnome-session -f -o cat请注意,某些发行版和版本会记录到不同的文件,而旧 GNOME 版本通常会记录到您的显示管理器登录的任何内容。- 使用官方(虽然很棘手)的日志记录方式:GNOME 进行调试。我个人无法让它发挥作用。

于 2018-07-09T08:15:17.817 回答