Visual Studio 代码 - 调试生成的进程

Visual Studio Code - Debugging a spawned process

项目设置,是一个基本的 express 应用程序,使用 express-generator 生成。

项目 vscode-debugging-node 在 GitHub

可用

请参阅 Visual studio Code - Debugging node application

上的截屏视频

Gruntfile.js in root of the project, manages the dev process. The purpose of the Gruntfile.js 很简单,它启动服务器并监视任何文件更改。 在检测到所需文件的更改时,它会重新启动服务器(终止现有进程并启动一个新进程)。

Gruntfile.js uses ./task/server.js到start/restart服务器。

Gruntfile.js就是这样开发的,以后会加入cookie管理,提供登录体验。

在执行 $ grunt start 任务时,如果传递了一个名为 NODE_INSPECTOR=*env 变量,服务器将在 --debug mode 中启动。 当 grunt 任务以 --debug 模式与 node-inspector 运行 并行执行时,我可以使用 Chrome 来调试整个应用程序。


参考Debugging in Visual Studio Code, I tried to achieve the same by updating the .settings/launch.json,与"program": "/usr/local/bin/grunt""args": ["start"]"env": {"NODE_INSPECTOR":"*"}

我发现调试器只附加到 ./task/server.js 但在整个应用程序上。我怀疑,这可能是由于 spawned server.


是否可以在visual studio代码中调试这种情况?如果是,了解详情会有很大帮助。

您的怀疑是正确的,您正在配置 Visual Studio 代码以附加到启动服务器的 g运行t 任务,而不是服务器本身。

您有两种选择来调试它:

  1. 从终端执行 NODE_INSPECTOR=* grunt start。 服务器启动后,使用 [=11] 中可用的相同 Attach 配置将 运行ning 服务器附加到 Debugger =].在 Debugger 视图中,从配置文件下拉列表中选择 Attach 并启动 Debugger(绿色 ► 播放按钮).

更新—— Sarbbotam 录制了成功附加到他的 node.js 应用程序的截屏视频,您可以在此处找到它 Visual studio Code - Attaching a Node App to Debugger

  1. 直接配置VSCode到运行服务器,这样你就不会让g运行t任务监听变化并重启服务器。为此,将 program 选项更改为 "bin/www"