如何使用 GNOME 的 Looking Glass?

问题描述 投票:0回答:1

我想涉足 Gnome Shell 的扩展开发,但我似乎无法理解如何在 Looking Glass

lg
中执行一些任务来实际调试我的东西。

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

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

debugging gnome-shell gnome-shell-extensions looking-glass
1个回答
7
投票
r(...)

在以下命令中使用结果。 你得到

r(...) = undefined
的原因是因为
log(String);
没有返回任何内容,因此结果是
undefined
2:要么记录整个 

init()

enable()
,然后检查它中断的位置,并尝试使用日志或注释掉代码行来查明中断行(尽管罪魁祸首可能是在一般日志记录中定义的,在 参考资料 部分中进行了描述)在底部)。
3:没有官方文档。他们有一些过时的 GNOME Shell 3.4 教程,与 3.6 的解释略有不同,有几页介绍您使用的库的 C(++) 端(尽管大多数函数、变量和常量使用相同的名称),但是要获得任何真实信息,您需要经验,挖掘其他 GNOME 和 shell 扩展代码或一些非官方来源。然而,非官方来源并不总是最新的。

    RooJS
  • 最新生成的文档,尽管至少事件是关闭的,因为它们是用 -(减号)而不是 _(下划线)分隔的。
  • 旧的,但大多有用的文档
  • ,MathematicalCoffee 有更多有用的东西,比如深入解释的代码,这是一个非常可靠的学习源。
  • 生成的文档,几乎所有内容都在那里
  • ,非常广泛,但有时网站会离线几天。您可以尝试克隆 git 存储库以在本地运行它,但 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 调试
  • 。 我个人无法让它发挥作用。
© www.soinside.com 2019 - 2024. All rights reserved.