debug.setupvalue (counter,2,10) end i = i + 1 end -- if until not name print(counter())执行以上代码输出结果为:1 2 index 1 k = 1 index 2 n = 2 11在以上实例中,计数器在每次调用时都会自增1。实例中我们使用了 getupvalue 函数查看局部变量的当前状态。我们可以设置局部变量为新值。实例中...
print(debug.getinfo(1))执行以上代码输出结果为:Stack trace stack traceback: test2.lua:2: in function 'myfunction' test2.lua:8: in main chunk [C]: ? table: 0054C6C8 Stack trace end 在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另...
在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另一个实例我们经常需要调试函数的内的局部变量。我们可以使用 getupvalue 函数来设置这些局部变量。实例如下:function newCounter () local n = 0 local k = 0 return function () k = n n = n + ...
1 debug():进入交互式调试模式,在此模式下用户可以用其它函数查看变量的值。 2 getfenv(object):返回对象的环境。 3 gethook(optional thread):返回线程当前的钩子设置,总共三个值:当前钩子函数、当前的钩子掩码与当前的钩子计数。 4 getinfo(optional thread,function or stack leve,optional flag):返回保存函数信...
在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另一个实例 我们经常需要调试函数的内的局部变量。我们可以使用 getupvalue 函数来设置这些局部变量。实例如下: 实例 function newCounter () local n = 0 ...
同样的,也可以利用调试库中的debug.setlocal和debug.setupvalue来完成同样的功能。 5. 小结 到这里,我们就把Lua语言中与调试有关的机制和代码都理解清楚了,剩下的问题就是如何利用它提供的这些接口,来编写一个类似gdb一样的调试器。 就好比:Lua已经把材料(米、面、菜、肉、佐料)摆在我们的面前了,剩下的就需要...
debug(): 进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计算一些表达式,等等。 输入一行仅包含 cont 的字符串将结束这个函数, 这样调用者就可以继续向下运行。 2. getfenv(object): ...
在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另一个实例 我们经常需要调试函数的内的局部变量。我们可以使用 getupvalue 函数来设置这些局部变量。实例如下: function newCounter () local n = 0 ...
debug 库由两种函数组成:自省(introspective)函数和 hooks。自省函数使得我们可以检查运行程序的某些方面,比如活动函数栈、当前执行代码的行号、本地变量的名和值。Hooks 可以跟踪程序的执行情况。 Debug 库中的一个重要的思想是栈级别(stack level)。一个栈级别就是一个指向在当前时刻正在活动的特殊函数的数字,也就是...
在getlocal被调用的那一点,c已经超出了范围,name和value都不在范围内。(记住: 局部变量仅仅在他们被初始化之后才可见)也可以使用debug.setlocal修改一个局部变量的值,他的前两个参数是栈级别和变量索引,第三个参数是 变量的新值。这个函数返回一个变量名或者nil(如果变量索引超出范围)...