使用debug.getlocal的一般语法如下: 代码语言:txt 复制 local name, value = debug.getlocal(level, index) 其中,level表示函数调用堆栈的级别,0表示当前函数,1表示调用当前函数的函数,依此类推。index表示局部变量的索引,从1开始。 该函数的返回值是局部变量的名称和值。如果找不到指定的局部变量,返回值为nil。
debug.sethook(print, "l") 1. 显示结果如下: line 136 line 113 line 76 line 77 line 113 line 118 1. 2. 3. 4. 5. 6. 我们也可以自定义一个handler,传入第一个参数,通过debug库的getinfo获取正在执行的代码文件路径: debug.sethook(function (event, line) print(debug.getinfo(2).short_src ...
Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。 Lua 中 debug 库包含以下函数: 上表列出了我们常用的调试函数,接下来我们可以看些简单的例子: function myfunction () print(debug.traceback("Stack trace")) print(debug.get...
在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另一个实例我们经常需要调试函数的内的局部变量。我们可以使用 setupvalue 函数来设置这些局部变量。实例如下:实例 function newCounter () local n = 0 local k = 0 return function () k = n n = n...
在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。 另一个实例我们经常需要调试函数的内的局部变量。我们可以使用 getupvalue 函数来设置这些局部变量。实例如下:实例 function newCounter () local n = 0 local k = 0 return function () k = n n = ...
local name, value = debug.getlocal(1, a) if not name then break end print(name, value) a = a + 1 end end foo(10, 20) 结果为: a 10 b 20 x nil a 4 索引为1的变量是a,2是b,3是x,4是另一个a。在getlocal被调用的那一点,c已经超出了范围,name和value都不在范围内。(记住: 局部...
localfunctionlinehook(event, line) localinfo =debug.getinfo(2,"nfS") for_, vinpairs(status.bptable)do ifv.func == info.funcandv.line == linethen localprompt =string.format("(%s)%s %s:%d\n", info.namewhat, info.name, info.short_src, line) ...
debug.gethook debug.sethook debug.getinfo debug.getlocal debug.setlocal debug.setupvalue debug.traceback debug.getregistry 上面已经说到,Lua给用户提供了设置钩子的API函数lua_sethook,用户可以直接调用这个函数,此时传入的钩子函数的定义格式需要满足要求。
我们可以使用 getupvalue 函数来设置这些局部变量。实例如下: 实例function newCounter () local n = 0 local k = 0 return function () k = n n = n + 1 return n end end counter = newCounter () print(counter()) print(counter()) local i = 1 repeat name, val = debug.getupvalue(counter...
前置之前所有模块的主干内容.简介调试功能需要使用debug模块.它仅仅提供了一些基本功能,而没有实现常见的完整调试器.另外官方不建议滥用这个库,详见[官方书籍](http://www.lua.org/