Удаленная отладка завершается сбоем в VSCode из-за дополнительной опции «--interpreter = mi», переданной в LLDB - PullRequest
0 голосов
/ 25 марта 2019

Я настраивал удаленную среду отладки, используя docker, на котором установлен lldb-6.0.Я также использовал GDB для настройки процесса.Мой файл launch.json имеет конфигурации как для gdb, так и для lldb.GDB работает нормально, но vscode не может подключиться к lldb, потому что он передает один дополнительный аргумент: --interpreter = mi.Я получаю ошибку:

/usr/bin/lldb-6.0: unrecognized option '--interpreter=mi'

GDB может распознать это, но lldb не распознает.

Мой файл launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "LLDB debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/tmp/project/hello.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "/tmp/project",
            "environment": [],
            "externalConsole": false,
            "pipeTransport": {
                "debuggerPath": "/usr/bin/lldb-6.0",
                "pipeProgram": "docker",
                "pipeArgs": [
                    "exec",
                    "-i",
                    "dev-image",
                    "sh",
                    "-c"
                ],
                "pipeCwd": ""
            },
            "sourceFileMap": {
                "/tmp/project": "${workspaceRoot}/project"
            },
            "MIMode": "lldb",
            "miDebuggerPath": "/usr/bin/lldb-6.0",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "customLaunchSetupCommands": [
                {
                    "text": "target-run",
                    "description": "run target",
                    "ignoreFailures": false
                }
            ]
        },
        {
            "name": "GDB debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/tmp/project/hello.out",
            "preLaunchTask": "hello world build",
            "args": [],
            "stopAtEntry": false,
            "cwd": "/tmp/project",
            "environment": [],
            "externalConsole": false,
            "pipeTransport": {
                "debuggerPath": "/usr/bin/gdb",
                "pipeProgram": "docker",
                "pipeArgs": [
                    "exec",
                    "-i",
                    "dev-image",
                    "sh",
                    "-c"
                ],
                "pipeCwd": ""
            },
            "sourceFileMap": {
                "/tmp/project/": "${workspaceRoot}/project"
            },
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

Нужно ли устанавливатьправильные расширения отладки lldb или я могу сделать эту работу, добавив некоторые атрибуты launch.json?

*********** ОБНОВЛЕНИЕ Я нашел решение.Проблема была в том, что я использовал lldb.Не лдб-ми.LLDB-mi - это инструмент, который помогает отправлять и получать некоторые сообщения на основе протокола, чтобы сделать возможной удаленную отладку.В конфигурации отладки LLDB необходимо внести два изменения

"debuggerPath": "/usr/bin/lldb-mi-6.0"
"miDebuggerPath": "/usr/bin/lldb-mi-6.0",
...