有没有办法使用远程调试器逐步执行 LuaLaTeX 宏?

有没有办法使用远程调试器逐步执行 LuaLaTeX 宏?

编写 LaTeX 宏一直很困难,似乎编写一个主要的包只能由真正的程序员

幸运的是,LuaTeX 正在开发中,而且编写 Lua 宏可以说比用 TeX 编程更人性化。不过,如果有办法将 LuaTeX 与远程调试器结合起来,它可能会变得更加友好。

因此我问:有没有办法远程调试 LuaLaTeX 宏?

这个问题本质上是对帖子的重新表述使用 LDT 在 LuaLatex 中调试 Lua。由于帖子中没有真正包含问题,因此已关闭。帖子中提出了一个几乎完整的解决方案,但存在一些问题,我想知道这些问题是否可以解决。

答案1

如今,您可以在 LuaTeX 处理文档的过程中对 Lua 代码进行 GUI 调试。使用断点、监视变量、逐步执行代码、调用堆栈,甚至在鼠标悬停时显示带有变量内容的工具提示。

我使用 TeX 的环境是VS 代码+LaTeX 工作坊+莱特克斯。它非常方便:我可以编写和调试 C++ 程序,并在同一个窗口中撰写描述它的论文。LaTeX Workshop 具有如此多的功能,以至于任何像 TeXstudio 这样的软件都感觉没有必要。

您还可以在 VS Code 的同一环境中编辑 TeX 文档并调试其 Lua。要支持和调试文档中的 Lua,您需要两个扩展:Lua本地 Lua 调试器

要调试,请在序言中插入以下内容:

\begin{luacode}
    require("lldebugger").start()
\end{luacode}

然后创建以下启动配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Custom Lua Environment",
            "type": "lua-local",
            "request": "launch",
            "stopOnEntry": false,
            "program": {
                "command": "lualatex"
            },
            "args": ["mwe.tex"]
        }
    ]
}

上面mwe.tex的是文档的名称。就是这样。您可以开始调试了,只需按 F5 即可。到目前为止,唯一的缺点是它无法在文档内放置断点.tex;它必须是 Lua 文件。

以下是调试会话的屏幕截图:

在此处输入图片描述

答案2

一个简单、轻量级的替代方案是命令行界面调试器调试器.lua作者:Scott Lembcke。这是不是远程调试解决方案,但设置起来非常容易。缺点是没有 GUI,所以一切都通过终端完成。但它比发出打印命令要好得多,这可能是迄今为止大多数 LuaLaTeX 包编写者使用的方法。

开始:

  1. 下载调试器.lua并将其放在您的项目文件夹中。
  2. 将命令放在local dbg = require("debugger")要调试的.lua 文件的开头。
  3. 将命令放置dbg()在代码中您希望代码执行中断的位置。
  4. 使用终端命令检查变量、执行自定义代码等。发出命令h以获取可用命令的简单摘要。

相关内容