可以附加到进程的 Lua 调试器

标签 lua

我的公司有一个使用嵌入在其运行时中的 Lua 的程序,正在加载 .lua磁盘中的文件并重复执行其中定义的功能。

有没有办法附加到正在运行的进程并在我的 .lua 中设置断点?文件? (我会接受 gdb 样式的命令行调试作为 Lua 发行版的一部分,或者可能是提供类似 Visual-Studio 的 GUI 断点的第三方 IDE。)

或者考虑到运行时从磁盘加载随机文件的性质,我所要求的完全是荒谬和不可能的?

编辑 : 看起来这不是荒谬的,因为 Lua 自己的 debug.getinfo() 函数可以确定给定函数的源文件, debug.sethook() 允许对输入的每一行新代码进行回调。因此,从磁盘加载源代码并能够判断解释器何时执行该文件中的特定代码行是合理的。问题仍然存在:我如何锁定具有 Lua 解释器的现有进程并注入(inject)我自己的跟踪函数(然后可以监视文件/行号对并暂停执行)?

最佳答案

我一直在使用Decoda编辑器。它允许您附加到正在运行的 C++ 应用程序,之后它会检测到您正在 C++ 代码中运行 Lua 解释器并显示您的 Lua 源代码,您可以在其中像往常一样添加喙点和检查变量。

关于可以附加到进程的 Lua 调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419141/

相关文章:

c - 在 Visual Studio 2008 或 2010 中将 Lua 嵌入到 C 应用程序中

lua - 从另一个 Lua 文件加载时如何将参数传递给 Lua 文件?

lua - 这个模式 ^[%w-.]+$ 在 Lua 中是什么意思?

Lua,错误处理 pcall()

android - Corona SDK 偏移不好

c++ - 从表中提取用户数据,使用 lua c API

ios - iOS 中的 Lua 和侧面加载脚本

macos - 在 Mac os x Lion 上构建和安装 Lua 5.2.0

Lua,关于__gc设置顺序的问题

string - 为什么 lua string.find 对于这个测试用例返回 true?