Debugging 通过调试库创建新的局部变量?

Debugging 通过调试库创建新的局部变量?,debugging,lua,scope,Debugging,Lua,Scope,您可以通过debug.setlocal设置现有局部变量的值,但如何创建新的局部变量?您不能以这种方式创建新的局部变量。“将值赋值给堆栈级别上具有函数局部索引的局部变量”和“如果没有具有给定索引的局部变量,则返回nil”,因此它不会创建新变量。不认为可以。你为什么要这么做?你会如何使用这个新的局部变量?您不能从代码中使用它(因为对不存在的局部变量的所有引用都已映射到upvalues或全局变量)@egor我需要它作为概念证明,我需要在调用函数的范围内创建一个局部变量。还有其他方法吗?是否要在运行时创

您可以通过debug.setlocal设置现有局部变量的值,但如何创建新的局部变量?

您不能以这种方式创建新的局部变量。“将值赋值给堆栈级别上具有函数局部索引的局部变量”和“如果没有具有给定索引的局部变量,则返回nil”,因此它不会创建新变量。

不认为可以。你为什么要这么做?你会如何使用这个新的局部变量?您不能从代码中使用它(因为对不存在的局部变量的所有引用都已映射到upvalues或全局变量)@egor我需要它作为概念证明,我需要在调用函数的范围内创建一个局部变量。还有其他方法吗?是否要在运行时创建一个新的局部变量,并且永远不要在程序中使用它?不要在这样毫无意义的任务上浪费时间,试着开始创建一些真正有用的东西。局部变量只是堆栈中的一个保留位置。您不能创建新的变量,因为堆栈位置的使用是以字节码硬连接的(是的,您必须修改函数的字节码以添加新的局部变量)。我知道这一点,我想要一种通过调试库创建新变量的方法使用调试库无法做到这一点。正如Egor在评论中所说,您可能可以调整字节码,但它与最初使用该变量没有太大区别。