将调试器附加到由 vscode 中的tasks.json启动的flask进程

问题描述 投票:0回答:1

我的工作区中有以下tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Locally",
            "dependsOn": ["Run Backend", "Run Frontend"],
            "dependsOrder": "parallel",
        },
        {
            "label": "Run Frontend",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/frontend"
            },
            "runOptions": {
                "runOn": "folderOpen"
            },
            "command": "npm",
            "args": ["run", "dev"],
            "presentation": {
                "panel": "dedicated"
            }
        },
        {
            "label": "Run Backend",
            "options": {
                "cwd": "${workspaceFolder}/backend"
            },
            "runOptions": {
                "runOn": "folderOpen"
            },
            "command": "python",
            "args": ["-m", "flask", "--debug", "--app", "main", "run"],
            "presentation": {
                "panel": "dedicated"
            }
        },
        
    ]
}

当我打开 vscode 时,它会启动两个终端:一个使用

npm run dev
运行 React 前端,另一个使用
python -m flask --debug --app main run
运行 Flask 应用程序。

我想做的是将 VSCode 调试器附加到 Flask 进程,这样当我创建断点时我可以调试变量,这可能吗?

我发现的所有解决方案都指向使用 launch.json,但如果可能的话,我想将其保留在任务中,因为当我打开 VSCode 时它会自动运行

python visual-studio-code flask vscode-debugger vscode-tasks
1个回答
0
投票

这是可能的。您可以在下面阅读更多相关内容:

https://code.visualstudio.com/docs/python/debugging#_additional-configurations

只需在

launch.json
文件中创建一个条目,如下所示:

{
    "name": "Python Debugger: Attach using Process Id",
    "type": "debugpy",
    "request": "attach",
    "processId": "${command:pickProcess}"
}

每当要求您选择要附加的进程 ID 时,请选择您的 Flask 应用程序的进程 ID。


注意:对于 Linux 用户,可能需要执行额外的步骤:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
© www.soinside.com 2019 - 2024. All rights reserved.