- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
摘要
我正在尝试在 docker 镜像 (Ubuntu) 中调试 C++ 程序,同时在我的主机系统 (OS X) 上使用 VSCode 作为 IDE。在对 gdbserver 和 VSCode 任务进行各种修补后,我现在能够成功运行调试器,但是每次启动调试 session 时,VSCode 都会挂起 10 秒,然后报告错误消息:
"The preLaunchTask 'docker gdb' cannot be tracked."
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v "$(pwd):/app" -w "/app" -p 9091:9091 {imageName} /bin/bash
当我在主机上启动调试 session 时,我使用这个启动命令,将本地 gdb 连接到 docker gdbserver,并运行一个预启动任务:
{
"version": "0.2.0",
"configurations": [
{
"name": "Remote unit test",
"type": "cppdbg",
"request": "launch",
"program": "./tests/ConfigurationTest.cpp_TestRunner",
"miDebuggerServerAddress": "localhost:9091",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "docker gdb"
}
]
}
这是启动前任务的定义;它使用 docker exec 杀死任何现有的 gdbserver 并在相关的可执行文件上启动一个新的:
{
"version": "2.0.0",
"tasks": [
{
"label":"docker gdb",
"command": "docker exec {containerName} /bin/bash -c \"pkill gdbserver; gdbserver localhost:9091 ./tests/ConfigurationTest.cpp_TestRunner\"",
"isBackground": true,
"type": "shell"
}
]
}
当我启动调试 session 时,我立即得到以下输出,这是预期的:
Process ./tests/ConfigurationTest.cpp_TestRunner created; pid = 1167
Listening on port 9091
最佳答案
我今天遇到了同样的问题,我试图用调试器运行 Mocha 测试,vscode 正在等待调试器完成 preLaunch 任务,这与我需要的相反 - 任务暴露了调试器,所以我需要它在“背景”中运行 - 尽管如此,这个配置为我修复了它。
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Docker: Attach to Mocha",
"port": 5858,
"address": "localhost",
"localRoot": "${workspaceFolder}/server",
"remoteRoot": "/usr/src/app/server",
"protocol": "inspector",
"preLaunchTask": "mocha-docker-debug"
}
]
}
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "mocha-docker-debug",
"type": "shell",
"command": "docker exec up-ibe-server-node npm run test-debug",
"group": "test",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"problemMatcher": {
"owner": "mocha",
"fileLocation": "relative",
"pattern": [
{
"regexp": "^not\\sok\\s\\d+\\s(.*)$"
},
{
"regexp": "\\s+(.*)$",
"message": 1
},
{
"regexp": "\\s+at\\s(.*):(\\d+):(\\d+)$",
"file": 1,
"line": 2,
"column": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern":{
"regexp": "mocha*"
},
"endsPattern":{
"regexp": "Debugger listening*"
}
},
}
}
]
}
isBackground
旗帜,
beginsPattern
和
endsPattern
正则表达式,这告诉“父”启动任务,当 xxx 从“子”打印到控制台时,它已完成,vscode 可以继续执行实际任务。
关于debugging - 在 VSCode 中使用 gdbserver 进行调试时停顿 - "The preLaunchTask ' docker gdb' 无法跟踪。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169485/
当我编译我的c文件时出现错误 (/""正在执行任务:g++ -g helloworld.c < 'g++' 不是内部或外部命令,可运行的程序或批处理文件。终端进程以退出代码终止:1 终端将被任务重用,
我在 Visual Studio 代码中有一个调试设置,我在其中运行一个可以执行我的 JS 文件的外部二进制文件(使用 duktape)。调试适配器目前仅支持附加请求(不支持启动),因此我必须先运行二
我正在使用 VSCode 调试我的 CPP 代码。在我的代码运行之前,我需要使用 preLaunchTask 来设置我的环境。所以我的代码应该在同一终端中的 preLaunchTask 之后运行。但它
Visual Studio 在 OSX 上调试 c# 脚本,显示错误:preLaunchTask“构建”以退出代码 1 终止。 这是 launch.json 文件的副本: { "version
我试图弄清楚如何在 launch.json 文件的 prelaunchtask 中同时运行多个任务。 我在tasks.json中的代码如下: "version": "2.0.0", "task
根据the documentation ,可以在调试前启动程序: To launch a task before the start of each debug session, set the pr
我读过这个错误是因为 launch.json 和 tasks.json 文件中的一些设置。所以我删除了它们并制作了新的,但它给出了相同的错误并且不会构建和调试。我如何解决它? 启动.json: {
摘要 我正在尝试在 docker 镜像 (Ubuntu) 中调试 C++ 程序,同时在我的主机系统 (OS X) 上使用 VSCode 作为 IDE。在对 gdbserver 和 VSCode 任务进
我是一名优秀的程序员,十分优秀!