aardio 文档

aardio 范例: 调试钩子

import debug;    

//注册一个新的调试钩子
var dbg = debug.hook()

//每行代码触发
dbg.line = function(line){

    io.print( "line",line )

    //可用类似sql语法查询调试信息
    var info = debug.queryinfo(2,"select source,function,upvars,name,currentline,activelines");
    io.print( info.name,info.name_where /* ,info.source.code*/ )
}

//调用函数触发
dbg.call = function(){
    io.print( "call" )
    io.print( debug.traceback(,"调用栈",2));
}

//返回值触发
dbg.return = function(line){
    io.print( "return" )
}

//尾调用触发,必须同时定义 dbg.return 回调,如果仅指定 dbg.tailreturn 则不会被触发
dbg.tailreturn = function(line){
    io.print( "tailreturn" )
}

io.open()
function func(){

}
func()
io.print("aaa") 

dbg.line = null; //注销一个钩子函数
dbg.call = null; //注销一个钩子函数
dbg.return = null; //注销一个钩子函数
dbg.tailreturn = null; //注销一个钩子函数

execute("pause")

Markdown 格式