【Lua从青铜到王者基础篇】第十三篇:Lua 调试(Debug)

x33g5p2x  于2022-04-08 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(271)

系列文章目录

前言

🌲一、Lua 调试(Debug)

Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。

Lua 中 debug 库包含以下函数:

上表列出了我们常用的调试函数,接下来我们可以看些简单的例子:

function myfunction ()
print(debug.traceback("Stack trace"))
print(debug.getinfo(1))
print("Stack trace end")
        return 10
end
myfunction ()
print(debug.getinfo(1))

以上代码的输出结果为:

Stack trace
stack traceback:
	D:\vscode lua����\hello world/Untitled-1.lua:1459: in function 'Myfunction'
	D:\vscode lua����\hello world/Untitled-1.lua:1464: in main chunk
	[C]: in ?
table: 00000213EBA939F0
Stack trace end
table: 00000213EBA939B0

在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。

🌳二、另一个实例

我们经常需要调试函数的内的局部变量。我们可以使用 setupvalue 函数来设置这些局部变量。实例如下:

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, i)
  if name then
    print ("index", i, name, "=", val)
        if(name == "n") then
                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 函数查看局部变量的当前状态。我们可以设置局部变量为新值。实例中,在设置前 n 的值为 2,使用 setupvalue 函数将其设置为 10。现在我们调用函数,执行后输出为 11 而不是 3。

🌴三、调试类型

  • 命令行调试。
  • 图形界面调试。

命令行调试器有:RemDebug、clidebugger、ctrace、xdbLua、LuaInterface - Debugger、Rldb、ModDebug。

图形界调试器有:SciTE、Decoda、ZeroBrane Studio、akdebugger、luaedit。

💬🌲🌳🌴🌵总结

以上就是今天要讲的内容,本文介绍了Lua调试(Debug),而Lua调试(Debug)相关操作提供了程序的调试提示能实现能使我们快速便捷地了解数据的函数和方法,我们务必掌握。另外如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。

相关文章