#visual-studio-code #gdbserver
Вопрос:
Я пытаюсь написать конфигурацию запуска для кода VS, которая может запускаться gdbserver
как предварительная задача.
Когда я начинаю отладку, все просто останавливается, когда gdbserver говорит «Прослушивание порта XXXX».
Я нашел в Интернете много примеров методов для других отладчиков, но ничего конкретного для gdbserver.
Я пытался настроить isBackground
true
безрезультатно, а также пытался настроить problemMatcher
Я также не смог найти никакой документации, которая, казалось бы, объясняла бы, как написать свой собственный problemMatcher
.
Итак, как мне написать задачу, которая может запустить gdbserver как часть предварительной задачи для моего отладчика?
Вот моя задача запустить сервер gdbserver
{
"label": "run",
"type": "shell",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated"
},
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "ssh",
"args": [
"root@remote",
"'gdbserver localhost:9091 program'"
]
}
Вот моя конфигурация запуска
{
"name": "Remote Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/program",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "run",
"miDebuggerServerAddress": "remote:9091",
"miDebuggerPath": "aarch64-sbs-linux-gdb"
}
]
Ответ №1:
У меня были те же проблемы, что и у тебя. Я запустил его, используя сопоставитель шаблонов, и запустил его в фоновом режиме. Задача запускает сервер gdbserver только на удаленном целевом объекте. Он не компилирует и не отправляет файлы удаленному целевому объекту.
{
"type": "shell",
"label": "Start gdbserver",
"command": "ssh",
"args": [
"root@remote",
"gdbserver localhost:3000 ${fileBasenameNoExtension}"
],
// "dependsOn": [
// "optional build task"
// ],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"group": "build",
"detail": "Starts the gdbserver and waits for success",
"isBackground": true,
"problemMatcher": {
"pattern": [
{
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern": "^.*Process*",
"endsPattern": "^.*Listening*"
}
}
},