VS Code 启动 gdbserver

mws*_*wso 6 gdbserver visual-studio-code

我正在尝试为 VS Code 编写一个可以gdbserver作为 preLaunchTask 启动的启动配置。

当我开始调试时,当 gdbserver 说“Listening on port XXXX”时,一切都会停止

我在网上找到了许多其他调试器方法的示例,但没有任何特定于 gdbserver 的示例。

我尝试设置isBackground无济于事true,同时尝试设置problemMatcher

我也找不到任何似乎解释如何编写自己的文档problemMatcher

那么,如何编写一个任务来启动 gdbserver 作为调试器的 preLaunchTask 的一部分?

这是我启动 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'"
    ]     
}
Run Code Online (Sandbox Code Playgroud)

这是我的启动配置

{
    "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"
}
]
Run Code Online (Sandbox Code Playgroud)

小智 6

我和你有同样的问题。我使用模式匹配器运行它并在后台运行它。该任务仅启动远程目标上的 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*"
            }
        }
    },
Run Code Online (Sandbox Code Playgroud)