-
Notifications
You must be signed in to change notification settings - Fork 95
代码说明
fesily edited this page Mar 4, 2022
·
8 revisions
代码有三个部分:vscode的插件,debug adapter,debugger;具体的架构可以看vscode的开发文档.
最简单的部分,就是初始化相关的内容,大部分的代码就是配置校验.
代码位于extension/js文件夹下.
- 负责启动目标进程(launch模式)
- 初始化与debugger的通信,windows下执行dll注入
- 包装vscode的消息转发给debugger
该模块的下变量client对于vscode,变量server对于debugger
代码位于extension/script/frontend文件夹下.
以下不写frontend所在的目录了
main.lua里run()
是主循环, update()
处理vscode发过来的消息,proxy.update()
处理debugger发过来的消息
调试器分成了两块,worker和master.
worker是实际的调试器,master负责和adapter通信
入口在script/debugger.lua,start()
启动了加载了remotedebug动态库,并且初始了一个内置lua5.4虚拟机来启动master和woker.
worker主循环在mgr.lua
,master主循环在woker.lua
,其中会启动二个线程一个是打印错误消息,一个是master线程,worker直接运行在宿主线程
所以master和worker是1对N的关系,通过thread.channel对象.通信master处理DbgMaster对象,worker处理wokerChannel对象
代码位于extension/script/backend文件夹下.