我的公司有一个使用嵌入在其运行时中的 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/