Docker 在vscode调试器重新启动时,将运行postDebugTask,但不会运行preLaunchTask
我使用googletests在嵌入式C软件上运行单元测试,并使用docker容器在任何平台上轻松运行它们。现在我想从连接到docker容器并在其中运行gdb的vscode调试这些单元测试 我成功地配置了launch.json和tasks.json来启动和运行调试会话 launch.json: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"
{
"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并停用这两个任务,则重新启动可以正常工作)