Docker 在vscode调试器重新启动时,将运行postDebugTask,但不会运行preLaunchTask

Docker 在vscode调试器重新启动时,将运行postDebugTask,但不会运行preLaunchTask,docker,gdb,vscode-debugger,vscode-tasks,Docker,Gdb,Vscode Debugger,Vscode Tasks,我使用googletests在嵌入式C软件上运行单元测试,并使用docker容器在任何平台上轻松运行它们。现在我想从连接到docker容器并在其中运行gdb的vscode调试这些单元测试 我成功地配置了launch.json和tasks.json来启动和运行调试会话 launch.json: { "version": "0.2.0", "configurations": [ { "name": "tests debug", "type": "cppdbg"

我使用googletests在嵌入式C软件上运行单元测试,并使用docker容器在任何平台上轻松运行它们。现在我想从连接到docker容器并在其中运行gdb的vscode调试这些单元测试

我成功地配置了launch.json和tasks.json来启动和运行调试会话

launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "tests debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "/project/build/tests/bin/tests",
      "args": [],
      "cwd": "/project",
      "environment": [],
      "sourceFileMap": {
        "/usr/include/": "/usr/src/"
      },
      "preLaunchTask": "start debugger",
      "postDebugTask": "stop debugger",
      "pipeTransport": {
        "debuggerPath": "/usr/bin/gdb",
        "pipeProgram": "docker",
        "pipeArgs": ["exec", "-i", "debug", "sh", "-c"],
        "pipeCwd": "${workspaceRoot}"
      },
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}
tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "start debugger",
      "type": "shell",
      "command": "docker run --privileged -v /path/to/my/project:/project --name debug -it --rm gtest-cmock",
      "isBackground": true,
      "problemMatcher": {
        "pattern": [
          {
            "regexp": ".",
            "file": 1,
            "location": 2,
            "message": 3
          }
        ],
        "background": {
          "activeOnStart": true,
          "beginsPattern": ".",
          "endsPattern": "."
        }
      }
    },
    {
      "label": "stop debugger",
      "type": "shell",
      "command": "docker stop -t 0 debug",
    }
  ]
}
当我点击调试器重新启动按钮时,停止调试器任务运行,docker容器停止,但启动调试器未运行。调试会话挂起,我必须关闭vscode才能运行另一个调试会话。 我正在寻找一种方法,可以在调试器重新启动时运行这两个任务,也可以不运行任何任务(如果我从另一个终端启动docker并停用这两个任务,则重新启动可以正常工作)