vscode 提供调试功能可以调试 node php go 等程序。

它需要先创建一个配置文件 launch.json 才能开始调试。

以 Node 为例:


自动创建的 launch.json

{
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${file}"
    }
  ]
}

program 表示启动调试后运行的文件路径。

skipFiles 表示调试时忽略的文件,默认 <node_internals/**> 表示 Node 内部模块。

所以要调试 node 源码就要将这个配置去掉,就像:

{
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      // "skipFiles": [
      //   "<node_internals>/**"
      // ],
      "program": "${file}"
    }
  ]
}

但实际运行起来,并没有生效,打在 Node API 的断点的下一步并不能进入源码。

这可能是 vscode 对未指定的配置项进行了默认处理,这里将 skipFiles 字段整个注释,暗示 vscode 采用默认值,所以还要保留它:

{
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        // "<node_internals>/**"
      ],
      "program": "${file}"
    }
  ]
}

这样就可以了。

去 vscode 官网上找了下,并没有找到相应的说明…

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐