LuaPanda icon indicating copy to clipboard operation
LuaPanda copied to clipboard

随手写点,关于调试器的框架

Open stuartwang opened this issue 11 months ago • 0 comments

luapanda是一个lua写的调试器。为了提高运行效率,我把调用热点hook使用C重写了一遍,做成了一个模块。调试器启动时会尝试去找这个模块,如果找到就用,找不到就使用lua hook完成功能。

在开发lua调试器之后我又开发了一个quickjs调试器,其中使用了CDP作为前后端通信协议,直接对接了VScode内建的JavaScript Debugger(商店搜索 @builtin JavaScript Debugger 能找到)。框架上也是使用了C hook核心+js逻辑的形态。以下是开发了两个调试器之后的一些想法:

  • 脚本开发还是比C方便太多了,协议构建,字符串处理,三方库都能大大提升开发效率。
  • 关于脚本的性能弱于原生语言,应该用合理的架构去优化,比如调用热点函数写成原生模块。
  • CDP协议比较冗余,很多是用于chrome环境下的字段,开发调试器一般自定协议就行。特地使用CDP意义不大。
  • CDP协议的时序似乎没有清晰的文档介绍。我在和 vscode JavaScript Debugger 前端对接时被时序折腾了很久(还得看 JavaScript Debugger 插件的源码,还没注释)。
  • 所以还是得自己写插件,会稳定很多。我在对接遇 JavaScript Debugger 时遇到过几次vscode一升级,前后端就对不上了(人家是追着适配chrome, 我在后面追着适配它 ┓( ´——` )┏)

先想到想到这么多,有空再补吧

stuartwang avatar Mar 18 '24 16:03 stuartwang