gpt4 book ai didi

visual-studio-code - VSCode 中后台任务的正确开始模式和结束模式是什么?

转载 作者:行者123 更新时间:2023-12-03 19:36:26 25 4
gpt4 key购买 nike

我有一个静态网站(即只有 html 和客户端 JavaScript),我在本地调试时使用 python 服务。我有一个可以正确启动 python 的 VSCode 任务,我正在尝试将该任务设置为 preLaunchTaskDebugger for Chrome启动任务。所需的行为是,每当我开始调试 serve下面的任务确保网站正在被服务。

如果我正确理解后台任务,可以设置 beginsPatternendsPattern以发出状态变化的信号。

我期待当 python 回声时

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...



stdout problemMatcher下面将向启动任务发出信号,表明它已开始。相反,启动任务会一直等待,直到任务的 shell 命令终止才会继续执行。

可以配置任务来实现这种行为吗?

启动配置
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8000",
"webRoot": "${workspaceFolder}/webroot",
"preLaunchTask": "serve"
}
]
}

服务任务
{
"version": "2.0.0",
"tasks": [
{
"label": "serve",
"type": "shell",
"command": "python3 -m http.server",
"windows": {
"command": "py -m http.server"
},
"isBackground": true,
"options": {
"cwd": "${workspaceFolder}/webroot"
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated"
},
"problemMatcher": {
"owner": "custom",
"pattern":[
{
"regexp": "^([^\\s].*)$",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern":"^Serving HTTP (.*)$",
"endsPattern":"^Keyboard interrupt received, exiting(.*)$"
}
}
}
]
}

最佳答案

所以我们也遇到了类似的问题:想在 Docker 内部运行的 Django 应用程序上设置一个调试器。在我的设置中,调试器启动了 preLaunchTask它启动远程解释器调试器,除此之外(例如安装 ptvsd

原步骤:

  • preLaunchTask调用脚本 ( ./run-debug.sh )。
  • 此脚本使用以下命令调用远程调试器:docker container exec -it my_app python debug.py runserver --noreload --nothreading 0.0.0.0:8000
  • 关于 debug.py文件,有一个打印语句来知道调试器已启动。

  • 显然,这不起作用,VSCode 无法捕获调试器的输出。相反,在 run-debug.sh文件我添加了一个 echo 语句: Starting debugger session:哪个 VSCode 捕获了 ^_^。那为我解决了这个问题。

    任务.json ,相关问题匹配器:
    "problemMatcher": {
    "pattern": [
    {
    "regexp": ".",
    "file": 1,
    "location": 2,
    "message": 3
    }
    ],
    "background": {
    "beginsPattern": "^Starting debugger session:",
    "endsPattern": ".",
    }
    }

    运行调试.sh 脚本,相关部分:

    # Start remote process
    echo 'Starting debugger session:' #VSCode beginsPattern will catch this!
    docker container exec -it my_app python debug.py runserver --noreload --nothreading 0.0.0.0:8000

    关于visual-studio-code - VSCode 中后台任务的正确开始模式和结束模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478701/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com