QuickJS 原理解析一:编译调试

1,748 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

准备

关于 QuickJS 的介绍,这里不赘述了,需要进一步了解的,可以自行到官网查看。

首先,我们通过 GitHub 官方仓库地址,克隆 QuickJS 的代码到本地:

git clone https://github.com/bellard/quickjs.git

编译

QuickJS 是通过 Makefile 命令进行编译构建的,有两种方式可以选择:

  • 自行根据提供的编译选项选择执行。
  • 推荐执行make install,全局安装,二进制文件会被安装到 /usr/local 目录

这里为了方便,直接使用第二种方式,等待构建完成后,打开终端窗口:输入 qjs 命令,即可进入到 QuickJS 运行环境,如下图:

截屏2022-02-11 下午10.46.57.png

到这里,就可以愉快的在控制台里去运行我们的 JavaScript 代码了。

目前,我们将 QuickJS 引擎编译并运行起来,但是还无法进行调试。需要借助 IDE 工具。

调试

IDE 工具我们选用的是 CLion,支持 Makefile 项目,我们通过 CLion 打开之前下载好的 QuickJS 仓库,IDE 会自动识别出可执行的命令选项,如下图:

image.png

因为是做断点调试,所以,这里主要关注 qjs-debug 配置项。需要注意一点,如果是通过 make install命令编译的话,是不会生成对应的 qjs-debug 的可执行文件,要执行下 make qjs-debug命令生成。

然后,点击编辑选项,配置好对应的执行文件:

image.png

点击 ok 后,我们就可以点击 IDE 上的 debug 按钮进行断点调试了。

另外,要说明的是, QuickJS 会启动一个控制台用来接收用户的输入,断点的位置可以在每次输入完,执行 JavaScript 代码的方法里:

image.png

不过,这里有一个体验不太好的问题,就是 CLion 的 console 控制台对输入的识别不太好,会出现重复打印和一些识别问题,看起来是 CLion 的 bug,建议可以在其他地方写好 JavaScript 代码,复制到控制台中运行。