python - 在 VS Code 中使用 Python 和 Node 进程调试应用程序

标签 python node.js visual-studio-code

我最近选择了 VS Code,因为我有一个用 NodeJS 编写的新组件,我需要能够对其进行调试,并且了解到 VS Code 内置了调试支持。我可以在 PyCharm for Python 中进行调试,但 PyCharm 的社区版中不提供 JS 支持,因此我想将我的环境移至 VSC。

我正在使用的应用程序主要在 Python 上运行,并且我们添加了一个新组件,该组件在单独端口上的 NodeJS 上运行。我已设置好配置来启动主应用程序,该应用程序会启动 Python 和 NodeJS 服务器。

现在,当我在 NodeJS 和 Python 代码中设置断点时,我想将其设置为在断点处暂停。我认为这可以通过使用 "request": "attach" 的配置来完成,但是当我将端口与应用程序的端口匹配时,我只收到错误(无法附加(连接 ECONNREFUSED) 127.0.0.1:8888))。我知道这可能是因为端口此时尚未运行我的应用程序,但是当我返回自行运行附加配置时,我收到有关进程如何意外终止的通知。

所以我在这里,我不知道需要做什么才能让我的断点停止,以便我可以单步执行我的 Python 和 NodeJS 代码。

这是我的 launch.json 文件。 Python进程运行在8888端口,NodeJS进程运行在8895端口。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CloudDrafts",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/obrien.server/project/apps/obrien/runner.py",
            "args": ["-d", "${workspaceFolder}/obrien.server/_data"],
            "console": "externalTerminal",
            "pythonPath": "${workspaceFolder}/venv/bin/python2.7",
            "cwd": "${workspaceFolder}/obrien.server/project/apps/obrien",
            "env": {
                "PYTHONPATH": "${workspaceFolder}/obrien.server/project"
            }
        },
        {
            "name": "Attach (Python)",
            "type": "python",
            "request": "attach",
            "port": 8888,
            "host": "localhost"
        },
        {
            "name": "Attach (Node.js)",
            "type": "node",
            "request": "attach",
            "port": 8895,
            "address": "localhost"
        }
    ],
    "compounds": [
        {
            "name": "Debug CloudDrafts",
            "configurations": ["CloudDrafts", "Attach (Python)", "Attach (Node.js)"]
        }
    ]
}

澄清一下,我已经安装了 Python 扩展,并且已经阅读了尽可能多的 Microsoft 文档,但现在我并没有真正理解它,也没有太多运气找到我需要的东西。

必须做什么才能设置 VS Code 以允许对在不同端口中运行 Python 和 NodeJS 进程的应用程序进行断点调试?

最佳答案

Python 扩展的调试器仅设置为调试两端的 Python 代码,因此您在 attach 场景中看到的错误是因为它试图查找 ptvsd 的另一个实例 调试器在另一端,只找到 Node.js。如果您更改为按模块或文件调试之类的方式,那么 Python 调试将再次起作用。

至于附加到实时 Node 进程来调试另一端,我不知道该怎么做。

关于python - 在 VS Code 中使用 Python 和 Node 进程调试应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788609/

相关文章:

python - 条形图中令人讨厌的空白(matplotlib,Python)

node.js - NodeJS dotenv - 没有正确读取字符串值

javascript - GitHub copilot 自动补全 仅一行快捷键

visual-studio-code - 如何修复我的 sass 编译错误 : expected selector

python - 在 Python 中读取图例的高度

python - 为什么Class property.setter不是方法重载的情况?

python - 我可以将一个应用程序连接到 Django 中的 2 个数据库吗?

javascript - 使用 node & express 从我自己的服务器提供任何外部网页

node.js - 如何使用passport.js正确实现serializeUser?

angular - 错误: The func task detection didn't contribute a task for the following configuration