VS Сервер запуска кода gdbserver

#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*"
            }
        }
    },