如何使用VS Code调试Node.js C++ Addon 模块

VS Code作为目前最流行的开发工具之一,自从开始使用VS Code起就变得离不开这个开发神器了,最近由于项目的原因,接触了一些Node.js的C++插件,记录一下如何使用VS Code调试C++模块。

1. 设置VS Code的调试模块

设置VS Code的调试模块很容易,你有很多种方法可以实现,下面简单的列出常用的两种:

  • 方法一: 按住Cmd+Shift+P打开命令栏,在命令栏中输入open launch.json然后选择C++
  • 方法二:找到左侧边栏的调试按钮,然后在打开的边栏中点击顶部的齿轮图标⚙,然后选择C++

howtodebug

以上两种方式将会创建一个launch.json的模板文件,长这样子:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example ${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}

这个文件主要是用来定义你想用什么程序去开始你的调试工作,比如如果我们想要调试通过如下方式运行的代码node test/vtshaver.test.js(用node运行test/vtshaver.test.js文件)。我们只需要改变配置中的program成node的绝对地址(你可以使用which node找到当前Node版本的地址)。设置好node之后,就需要配置启动参数args,这里我们启动的是test/vtshaver.test.js文件,找到这个文件的绝对地址,然后配置上去即可。

另外,由于是C++的模块,我们需要在代码运行之前进行编译C++,所以我们可以通过preLaunchTask这个字段来配置,将它配置成npm: build:dev,这样没次我们调试任务启动之前,VS Code都会自动的执行相应的命令

"preLaunchTask": "npm: build:dev",

最终这个配置文件可能长这个样子:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "preLaunchTask": "npm: build:dev",
            "program": "/Users/mapbox-mofei/.nvm/versions/node/v8.11.3/bin/node",
            "args": ["/Users/mapbox-mofei/dev/mapbox/vtshaver/test/vtshaver.test.js"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}

现在打开相应的C++文件,然后点击左边行数边的空白处去添加一个断点(可以看到行数的左边会出现一个绿色的小圈圈)。然后回到调试窗口(点击左边导航栏的调试按钮),找到上方的绿色启动按钮,点击它!

howtodebug

如果你能正确的运行起来的话,那么恭喜你,你现在已经可以使用VS Code来调试C++代码了,程序会自动的停止在断点处,然后你也可以把鼠标放在任何相关的变量上去查看变量的内容。如果你想让程序继续进行,只需要点击顶部的导航按钮即可。

howtodebug

76090
  • logo
    • HI, THERE!I AM MOFEI

      (C) 2010-2024 Code & Design by Mofei

      Powered by Dufing (2010-2020) & Next.js

      IPC证:沪ICP备2022019571号-1