Lua语法小贴士(十一)debug库

本文介绍了Lua调试库中的自省函数和钩子机制。自省函数如debug.getinfo用于获取函数信息,包括source、linedefined等,而debug.getlocal和debug.setlocal则用于检查和修改局部变量。钩子函数通过debug.sethook设置,可以在call、return或执行新代码行时触发,提供程序运行的跟踪能力。
摘要由CSDN通过智能技术生成

Lua的调试库包含两种函数:自省函数和钩子。自省函数可以用来检查一个正在运行的程序的信息,而钩子可以跟踪程序的运行。

自省函数主要是debug.getinfo函数,函数声明为:

debug.getinfo([thread,]func[,what])

返回一个函数的信息表。可以直接传入函数,也可以传入一个数值,这个数值表示函数(运行在指定线程)的调用栈深度。0表示getinfo自己,1表示调用getinfo的函数,以此类推(一般2)。如果这个数值大于活动函数的深度,就会返回nil

返回值是一个table,包含以下字段:

source:函数定义的位置,如果函数是通过loadstring在一个字符串中定义的,那么source就是这个字符串。如果函数是在一个文件中定义的,那么source就是这个文件名加前缀‘@’。

short_src:source的短版本(最多60个字符),可用于错误信息中。

linedefined:该函数定义的源代码中第一行的行号。

lastlinedefined:该函数定义的源代码中最后一行的行号。

what:函数的类型。如果foo是一个普通的Lua行数,则为“Lua”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值