我习惯使用 vscode 调试器来调试多处理应用程序。当我启动进程时,我总是可以在调用堆栈中看到它们,如下所示:
我可以在代码中放置断点,当断点到达时,进程就会停止。
由于某种原因,该功能不再对我有用(也许是因为最新的更新?)。 现在我只能看到调用堆栈是否像这样:
我可以用断点停止主线程,但现在我无法进入正在运行的进程。
这是我的 launch.json 文件
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "Source/app.py",
"FLASK_ENV": "development",
"FLASK_DEBUG": "0"
},
// "justMyCode": false,
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"jinja": true
}
]
}
我启动进程的方式没有改变(多处理python lib),代码也没有改变,我返回了几次提交(当我知道我确实设法进入一个进程时),它也不起作用.
我可以看到这些进程正在正常工作,但不能让它们在任何断点处停止。
我读过,最新更新确实添加了一些有关调试器配置的内容,但似乎并不相关。
您将
--no-reload
传递给 Flask - 这会禁用自动重新加载,这首先需要使用两个进程。所以它只是调试一个进程。
我现在也遇到同样的行为。
VSCode 对所有配置类型都执行此操作:debugpy、node。
有趣的部分是,当我启动任何其他进程(甚至与另一个实例/进程相同的配置)时,两个进程都会立即出现,并且不会消失,直到我停止所有进程。如果我再次开始运行 0 个进程,我会始终得到相同的行为。如果我显示了 1 个进程并从弹出菜单中选择“重新启动”,它将重新启动并且不会再次显示任何进程。我尝试重新加载 VSCode,但这并没有改变任何事情。
例如,这是我正在运行的 launch.json 配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "dcss webtiles server:run:local",
"request": "launch",
"type": "debugpy",
"cwd": "${workspaceFolder}/docker-crawl/src/crawl-ref/source",
"program": "./webserver/server.py",
"console": "internalConsole",
},
]
}