我最近选择了 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/