既然是C++插件,那其实还是开发C++程序啦,所以调试是必不可少的,这里我以VSCODE为IDE,介绍在它上面的调试环境怎么配置,首先安装一个VSCODE,(^_-)
然后安装两个插件:
一个是智能提示,一个用于调试C/C++程序,更多具体的用法,大家度娘吧,我就不啰嗦了。
1,配置c_cpp_properties.json,让智能提示智能起来,没什么特别的,应该都能看明白其含义
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
// 这里是指定node-addon的目录,大家根据自己的情况搜索一下位置。这样就可以避免插件引入 #include <node_api.h> 时红色波浪线警告了,其实不指定也没问题
"C:\\Users\\XXXXXX\\AppData\\Local\\node-gyp\\Cache\\12.18.4\\include\\node\\**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64",
"compilerArgs": []
}
],
"version": 4
}
2,配置 launch.json ,按 F5 时可以调起DEBUG
我的想法就是用node启动一个js脚本,然后挂载到C/C++调试进程里。注意我用到了一个 preLaunchTask 配置,可以在发起调试前,预先做一些工作,比如重新编译工程。
{
"version": "0.2.0",
"configurations": [
{
"name": "ice camera",
"type": "cppvsdbg",
"request": "launch",
"program": "node",
"args": [
"${workspaceFolder}/nodecamera/ice/test/test_binding.js"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"preLaunchTask": "debug ice camera"
}
]
}
3,配置 tasks.json ,在开始调试时,重新编译C/C++程序
{
"version": "2.0.0",
"tasks": [
{
// 注意,lable定义的名称,将在 preLaunchTask 中被用到,并且是区分大小写的
"label": "debug ice camera",
"type": "npm",
// 这个 dev ,就对应了你工程里 package.json里的脚本,比如这里的这个脚本,我是这样定义的:"dev": "node-gyp rebuild --debug --module-name=ice --module_path=debug"
// 这个脚本的意思就是重新编译,大家可以看前面文章的介绍
"script": "dev",
// 指定工程的路径
"path": "nodecamera/ice/",
"detail": "rebuild node-addon-api for debug ice camera"
}
]
}
最后在C/C++代码里打上断点,就能调试啦。