当前位置: 首页 > 后端技术 > Node.js

vscode调试node.jsc++扩展

时间:2023-04-03 23:12:15 Node.js

使用VSCode调试NodeJSC++插件我在使用NAN编写nodejsc++扩展之前写了一篇文章。在实际开发过程中,肯定有单步调试的需求。下面简单介绍一下如何使用vscode调试node.jsc++扩展。通常,如果要调试一个程序,为了清楚地看到被调试的每一行代码、调用堆栈信息、变量名和函数名等,就需要被调试程序的调试符号信息。比如我们在使用GCC编译程序时,如果加上-g选项,就可以在编译后的程序中保留所有的调试符号信息。如果我们有hello_world.c的源文件,我们可以通过gcc-g-ohello_worldhello_world.c生成带有调试信息的hello_world程序。同样,如果我们要调试一个node.js扩展,我们也需要扩展源文件的调试符号信息。在生成带有调试信息的扩展之前,我们使用node-gyp调用相应的工具来编译项目。如果要生成调试符号信息,还应该从node-gyp文档入手。从node-gyp的命令选项部分,您可以看到node-gyp支持--debug选项。我们可以使用node-gyprebuild--debug生成带有调试信息的节点扩展。如果不加--debug,表示生成了releaseextension。我们在原项目的package.json文件的scripts部分添加两个任务,如下:执行npmrunrebuild会生成一个build/Release目录。执行npmrunrebuild:dev会生成一个build/Debug目录。配置vscodevscode安装lldb插件这里我们将使用lldb来调试节点扩展。这里我们需要在vscode中安装lldb扩展。安装过程参考vscode-lldb,这里不再赘述。ConfigurevscodetaskCmd+Shift+P输入configuretask配置一个task,会执行npmrunrebuild:dev生成一个带有调试信息的node扩展文件。作者的配置如下:{"version":"2.0.0","tasks":[{"type":"npm","script":"rebuild:dev","problemMatcher":[]}]}配置点击vscode调试的调试按钮后,在launch.json中配置调试node扩展的任务。注意配置的时候添加了一个preLaunchTask任务,也就是我们上一步配置的。最终的luanch.json配置如下:{"version":"0.2.0","configurations":[{"type":"lldb","request":"launch","name":"LaunchProgram","preLaunchTask":"npm:build:dev","program":"/absolute/path/to/node","args":["/absolute/path/to/your/index.js"]}]}从launch.json可以看出整个调试过程是:vscode插件调用lldb,启动nodejs执行/absolute/path/to/your/index.js,在js文件中调用node扩展,而这部分扩展已经包含了Debug信息,所以可以用来调试。调试节点扩展这里为了调试节点扩展,我们写了一个demo,引用节点扩展的Debug版本,如下:constaddon=require('../build/Debug/sum')console.log(addon.sum(1,2))项目地址:https://github.com/warjiang/d...