Visual Studio Code - 调试生成的进程

4

该项目的设置是基于Express应用程序生成器生成的基本Express应用程序。

该项目vscode-debugging-node可在GitHub上获取。

请参考Visual studio Code - 调试Node应用程序中的屏幕录像。


项目根目录下的Gruntfile.js管理开发过程。 Gruntfile.js的目的很简单,它启动服务器并监视任何文件更改。 检测到所需文件的更改时,它会重新启动服务器(杀死现有进程并启动新进程)。

Gruntfile.js使用./task/server.js来启动/重新启动服务器。

Gruntfile.js以这种方式开发,后期将合并cookie管理,以提供登录体验。

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


参考Visual Studio Code中的调试,我尝试通过更新.settings/launch.json来实现相同的内容,其中包括"program": "/usr/local/bin/grunt""args": ["start"]"env": {"NODE_INSPECTOR":"*"}

我发现调试器仅附加到./task/server.js而不是整个应用程序。我怀疑这可能是由于spawned server引起的。您是否可以在Visual Studio Code中调试此类情况?如果可以,了解详细信息将非常有帮助。
1个回答

3

你的疑虑是正确的,你正在配置Visual Studio Code以便附加到启动服务器的grunt任务,而不是服务器本身。

你有两个选项来调试:

  1. 从终端执行NODE_INSPECTOR=* grunt start。一旦服务器启动,使用与launch.json中相同的Attach配置将运行中的服务器附加到Debugger。在Debugger视图中,从配置下拉菜单中选择Attach并启动Debugger(绿色►播放按钮)。

更新--Sarbbotam为成功附加到他的node.js应用程序录制了一个屏幕录像,您可以在此处找到Visual studio Code - Attaching a Node App to Debugger

  1. 直接配置VSCode运行服务器,这样就不需要grunt任务监听更改并重新启动服务器。为此,请将program选项更改为"bin/www"

谢谢您的关心,但那不是我要找的。我知道我可以启动 ./bin/www,但这样我就失去了在文件更改时重新启动服务器的灵活性,这是非常理想的功能。使用纯 node-inspector 我可以实现它,请参考屏幕录像。我想知道在 VS Code 中是否也可能实现这一点。 - Sarbbottam
Sarbbotam,感谢您的评论,我更新了答案以涵盖您的情况,请告诉我如果这对您不起作用。 - Sofian Hnaide
非常感谢您的关注和回答。是的,“附加”是我一直在寻找的选项。它解决了我的问题。 - Sarbbottam
你好,能否告诉我是否可以进行远程调试,我已经在launch.json中更新了"address""XX.XX.XXX.XX",并在--debug模式下启动了远程服务器。当我尝试将远程服务器连接到调试器时,出现了“连接失败”错误。你能建议可能的问题吗?是否有任何日志可供查看详细信息?我可以通过ssh登录我的机器,并且当我执行node-inspector时,我可以访问http://XX.XX.XXX.XX:8080/debug?ws=XX.XX.XXX.XX:8080&port=5858上的node-inspector调试器。 - Sarbbottam
很遗憾,目前VSCode还不支持远程调试。如果您需要这个功能,请在用户反馈中告诉我们:http://visualstudio.uservoice.com/forums/293070-visual-studio-code - Sofian Hnaide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接