vscode调试node.js c++扩展

Debugging NodeJS C++ addons using VS Code

以前笔者写了一篇 用NAN写一个nodejs的c++扩展, 实际开发过程当中,确定是有单步调试的需求。这里简单介绍用如何用vscode调试node.js c++扩展。通常要调试某个程序,为了能清晰地看到调试的每一行代码、调用的堆栈信息、变量名和函数名等信息,须要待调试程序地 调试符号 信息。好比咱们在使用GCC编译程序的时候,若是加上 -g 选项便可在编译后的程序中保留全部的调试符号信息。假如咱们有一个hello_world.c的源文件,咱们能够经过gcc -g -o hello_world hello_world.c生成一个带调试信息的hello_world程序。相似的,若是咱们想要调试node.js扩展,咱们也须要扩展源文件的调试符号信息。node

生成带有调试信息的扩展

以前咱们经过node-gyp来调用对应的工具来编译项目,想要生成调试符号信息也应该从node-gyp的文档入手,从node-gyp的command options部分能够看到node-gyp支持--debug选项。咱们能够经过node-gyp rebuild --debug来生成带有调试信息的node扩展,若是不加--debug表示生成的是一个release扩展。咱们在原来项目的package.json文件的scripts部分中增长两个任务,以下:
clipboard.pngc++

执行npm run rebuild会生成一个build/Release目录。执行npm run rebuild:dev会生成一个build/Debug目录。git

配置vscode

vscode安装lldb插件

这里咱们将用lldb来调试node扩展。这里咱们须要在vscode中安装lldb扩展。安装的过程参考vscode-lldb ,这里再也不赘述。github

配置vscode task

Cmd+Shift+P 输入configure task配置一个任务,该任务会执行npm run rebuild:dev,生成带调试信息的node扩展文件。笔者的配置以下:npm

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "npm",
            "script": "rebuild:dev",
            "problemMatcher": []
        }
    ]
}

配置vscode 调试

点击debug按钮以后,下面在launch.json中配置调试node扩展的任务,注意在配置的时候增长一个preLaunchTask任务,该任务就是咱们上一步配置的。最终luanch.json配置以下:json

{
  "version": "0.2.0",
  "configurations": [{
     "type": "lldb",
     "request": "launch",
     "name": "Launch Program",
     "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扩展,而该部分扩展已经包含了调试信息,故而能够用于调试。函数

调试node扩展

这里为了调试node扩展,咱们写了一个demo用于引用Debug版本的node扩展,以下:工具

const addon = require('../build/Debug/sum')
console.log(addon.sum(1,2))

clipboard.png

项目地址:https://github.com/warjiang/d...ui

相关文章
相关标签/搜索