debuggee - VsCode调试插件
概述
桥接编译器debugger与vscode-debug-adapter,实现在vscode界面中的调试功能
主要内容
EFUN
/**
* 启用debugger并设置端口,相对于启动参数 --enable-debugger <listen_port>::<pause_when_start>::<remote_port> (后两个参数为可选)
* @param listen_port 监听端口,监听vscode发送的请求
* @param remote_prot vscode端的监听端口,有默认值,若vscode端设置了自定义值,则在debugger中也要保持一致
*/
void dbg.enable_module_debuggee(int listen_port, int remote_port = -1);
该函数一般用在运行中的服务器(未开启enable-debugger功能)中,启动debugger并设置监听端口后,vscode端的调试框架便能够attach到服务器并发送调试请求
通信
debuggee插件启用时会创建两个协程:
-
用来监听调试请求的listen_from_gstools:
- 即socket服务端,vscode的debug-adapter通过与其建立短连接来发送调试操作请求并接收响应
- 目前主要的调试请求包括(在vscode调试界面都有相应的操作选项):
- Start 开始调试
- Pause 暂停
- Continue 继续
- StepIn 逐语句
- StepOver 逐过程
- StepOut 跳出
- Stop 停止调试
- AddBreakpoint 添加断点
- AddFileBreakpoints 批量添加文件中断点
- DisableBreakpoint 删除断点
- InfoWatchVariable 获取变量信息
- InfoThreads 获取协程信息
- InfoPath 获取driver运行环境路径信息
- AttachToProcess 附加
- DeleteAllBreakpoint 删除所有断点
-
用来发送trap等事件的send_to_gstools:
- 即socket客户端,将调试运行过程中的事件(主要是trap状态下的堆栈帧)发送给debug-adapter
调试器
debuggee插件定义了一个Debugger的子类DebuggerBridge,用于适配vscode调试框架
GsLang调试说明
参数配置 (待完善)