# debug 库模块帮助文档

## debug 成员列表 <a id="debug" href="#debug">&#x23;</a>

调试函数库,  
debug 属于内置库,但必须使用 import debug 导入才能使用

### debug.callcount() <a id="debug.callcount" href="#debug.callcount">&#x23;</a>
函数调用栈深度

### debug.debug() <a id="debug.debug" href="#debug.debug">&#x23;</a>
插入断点  
执行到该位置时打开控制台进入调试环境,  
发布后程序忽略此函数不执行

### debug.getfunction(调用级) <a id="debug.getfunction" href="#debug.getfunction">&#x23;</a>
返回函数对象

### debug.getlocalvar(纤程,调用级,索引) <a id="debug.getlocalvar" href="#debug.getlocalvar">&#x23;</a>
返回局部变量名,变量值

### debug.getlocalvar(调用级,索引) <a id="debug.getlocalvar" href="#debug.getlocalvar">&#x23;</a>
返回局部变量名,变量值

### debug.getnamespace(对象) <a id="debug.getnamespace" href="#debug.getnamespace">&#x23;</a>
返回对象的命名空间

### debug.getupvar(函数对象,索引) <a id="debug.getupvar" href="#debug.getupvar">&#x23;</a>
返回函数闭包局部变量,变量值  
注意只有该函数引用的外层函数局部变量才能获取

### debug.hook() <a id="debug.hook" href="#debug.hook">&#x23;</a>
[返回对象:debugHookObject](#debugHookObject)

### debug.hook(可选参数：可在此输入协程对象) <a id="debug.hook" href="#debug.hook">&#x23;</a>
创建调试钩子

### debug.queryinfo() <a id="debug.queryinfo" href="#debug.queryinfo">&#x23;</a>
[返回对象:debugInfoObject](#debugInfoObject)

### debug.queryinfo(2,"select source") <a id="debug.queryinfo" href="#debug.queryinfo">&#x23;</a>
= 查询调用椎栈源码相关信息  
参数一可以是函数名、或调用级别  
1表示当前函数,2表示调用当前函数的函数

### debug.queryinfo(2,"select source,function,upvars,name,currentline,activelines") <a id="debug.queryinfo" href="#debug.queryinfo">&#x23;</a>
查询调用椎栈信息  
参数一可以是函数名、或调用级别  
1表示当前函数,2表示调用当前函数的函数

### debug.setlocalvar(纤程,调用级,索引,新值) <a id="debug.setlocalvar" href="#debug.setlocalvar">&#x23;</a>
修改局部变量值

### debug.setlocalvar(调用级,索引,新值) <a id="debug.setlocalvar" href="#debug.setlocalvar">&#x23;</a>
修改局部变量值

### debug.setupvar(函数对象,索引,值) <a id="debug.setupvar" href="#debug.setupvar">&#x23;</a>
设置函数闭包局部变量,变量值

### debug.traceback <a id="debug.traceback" href="#debug.traceback">&#x23;</a>
返回活动栈跟踪信息  
通常用于global.onError函数或catch语句中

### debug.traceback(纤程,"标题",调用级别) <a id="debug.traceback" href="#debug.traceback">&#x23;</a>
返回活动栈跟踪信息  
所有参数为可选参数,  
调用级别为1指当前函数,2为调用当前函数的函数,数值越大调用级别越高

## debugHookObject 成员列表 <a id="debugHookObject" href="#debugHookObject">&#x23;</a>

### debugHookObject.call <a id="debugHookObject.call" href="#debugHookObject.call">&#x23;</a>

```aardio
debugHookObject.call=function(){  
/*调用函数触发此回调*/  
}
```

### debugHookObject.close() <a id="debugHookObject.close" href="#debugHookObject.close">&#x23;</a>
关闭调试钩子

### debugHookObject.line <a id="debugHookObject.line" href="#debugHookObject.line">&#x23;</a>

```aardio
debugHookObject.line=function(line){  
/*每行代码触发此回调*/  
}
```

### debugHookObject.return <a id="debugHookObject.return" href="#debugHookObject.return">&#x23;</a>

```aardio
debugHookObject.return=function(line){  
/*return 语句触发此回调*/  
}
```

### debugHookObject.tailreturn <a id="debugHookObject.tailreturn" href="#debugHookObject.tailreturn">&#x23;</a>

```aardio
debugHookObject.tailreturn=function(line){  
/*尾定义触发此回调,  
必须同时定义 return 语句回调函数,  
如果仅指定 tailreturn 则不会被触发*/  
}
```

## debugInfoObject 成员列表 <a id="debugInfoObject" href="#debugInfoObject">&#x23;</a>

### debugInfoObject.activelines <a id="debugInfoObject.activelines" href="#debugInfoObject.activelines">&#x23;</a>
函数的有效代码行列表  
无效行指的是空行或注释等

### debugInfoObject.currentline <a id="debugInfoObject.currentline" href="#debugInfoObject.currentline">&#x23;</a>
当前行

### debugInfoObject.function <a id="debugInfoObject.function" href="#debugInfoObject.function">&#x23;</a>
当前函数对象

### debugInfoObject.name <a id="debugInfoObject.name" href="#debugInfoObject.name">&#x23;</a>
函数名字

### debugInfoObject.name_where <a id="debugInfoObject.name_where" href="#debugInfoObject.name_where">&#x23;</a>
global(全局变量)、  
self(当前命名空间成员变量)、  
var(局部变量)、  
upvar(上层语句块局部闭包变量)

### debugInfoObject.upvars <a id="debugInfoObject.upvars" href="#debugInfoObject.upvars">&#x23;</a>
引用的上层函数闭包变量数目

## debugInfoObject.source 成员列表 <a id="debugInfoObject.source" href="#debugInfoObject.source">&#x23;</a>

源码相关信息

### debugInfoObject.source.beginline <a id="debugInfoObject.source.beginline" href="#debugInfoObject.source.beginline">&#x23;</a>
开始定义行

### debugInfoObject.source.code <a id="debugInfoObject.source.code" href="#debugInfoObject.source.code">&#x23;</a>
源码

### debugInfoObject.source.endline <a id="debugInfoObject.source.endline" href="#debugInfoObject.source.endline">&#x23;</a>
结束;定义行

### debugInfoObject.source.file <a id="debugInfoObject.source.file" href="#debugInfoObject.source.file">&#x23;</a>
文件名

### debugInfoObject.source.kind <a id="debugInfoObject.source.kind" href="#debugInfoObject.source.kind">&#x23;</a>
类型  
"kernel"表示内核函数  
"function"  
表示普通函数  
"main"主函数  
"tail"尾调用

### debugInfoObject.source.src <a id="debugInfoObject.source.src" href="#debugInfoObject.source.src">&#x23;</a>
源码或文件名缩略信息
