Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
stuartwang opened this issue Mar 18, 2024 · 0 comments
Open

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

stuartwang opened this issue Mar 18, 2024 · 0 comments

Comments

@stuartwang
Copy link
Collaborator

stuartwang commented Mar 18, 2024

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, 我在后面追着适配它 ┓( ´——` )┏)

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant