【问题标题】:Visual Studio Code - Debugging a spawned processVisual Studio Code - 调试生成的进程
【发布时间】:2015-05-06 18:08:23
【问题描述】:

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

项目vscode-debugging-node 可在 GitHub 上获得

请参阅Visual studio Code - Debugging node application 的截屏视频


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

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

Gruntfile.js 就是以这种方式开发的,稍后它将结合 cookie 管理,以提供登录体验。

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


参考Debugging in Visual Studio Code,我尝试通过更新.settings/launch.json 来达到同样的效果,使用"program": "/usr/local/bin/grunt""args": ["start"]"env": {"NODE_INSPECTOR":"*"}

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


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

【问题讨论】:

    标签: node.js debugging spawn visual-studio-code


    【解决方案1】:

    您的疑问是正确的,您将 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,但随后我失去了在文件更改时重新启动服务器的灵活性,即非常理想的功能。使用普通的节点检查器我可以实现它,请参阅截屏视频。我想知道这在 VS Code 中是否可行。
    • Sarbbotam,感谢您的评论,我更新了答案以涵盖您的情况,如果这对您不起作用,请告诉我。
    • 很好,非常感谢您的关注和回答。是的,“附加”是我一直在寻找的选项。它解决了我的担忧。
    • 嗨,你能告诉我是否可以远程调试,我已经在launch.json 中用"XX.XX.XXX.XX" 更新了"address"。以--debug 模式启动远程服务器。当我尝试将远程服务器附加到调试器时,我得到一个connection failed error。你能建议可能是什么问题吗?对于详细问题,我可以查看任何日志吗?我可以 ssh 到我的盒子,而且当我执行节点检查器时,我可以通过 XX.XX.XXX.XX:8080/debug?ws=XX.XX.XXX.XX:8080&port=5858 访问节点检查器调试器
    • 不幸的是,VSCode 还不支持远程调试。如果这是您想看到的内容,请在用户语音visualstudio.uservoice.com/forums/293070-visual-studio-code 中告诉我们
    猜你喜欢
    • 2018-12-01
    • 2018-11-04
    • 2019-10-31
    • 1970-01-01
    • 2011-04-04
    • 2015-12-13
    • 1970-01-01
    • 2019-02-21
    • 2019-04-02
    相关资源
    最近更新 更多