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”