Vscode-cpptools: Официальная поддержка Clang и LLDB в Linux

Созданный на 6 мая 2020  ·  13Комментарии  ·  Источник: microsoft/vscode-cpptools

В настоящее время поддержка LLDB в Linux для VS Code отсутствует. Это явно не работает.

Официальной документации о том, как начать работу с Clang в Linux с помощью vscode-cpptools, также нет.

Было бы замечательно добавить официальную поддержку Clang / LLDB в Linux. Было бы неплохо распространить это на Windows благодаря кроссплатформенности LLVM.

Feature Request debugger docs

Самый полезный комментарий

Хорошо, я протестировал еще раз, и он работает с Ubuntu 18.04.

Вот как:

  1. Установите следующие пакеты через apt
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. Создавайте программные ссылки для исполняемых файлов, чтобы все работало должным образом
sudo ln -s /usr/bin/clang-10 /usr/bin/clang
sudo ln -s /usr/bin/clang++-10 /usr/bin/clang++
sudo ln -s /usr/bin/lldb-10 /usr/bin/lldb
# This one is a bit strange but VSCode only looks for the name `lldb-server-10.0.0` but not `lldb-server-10`
sudo ln -s /usr/bin/lldb-server-10 /usr/bin/lldb-server-10.0.0
  1. Соберите исполняемый файл lldb-mi из исходного кода
git clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
cmake .
cmake --build .
sudo cp src/lldb-mi /usr/bin/

Это должно быть так. А вот и мои launch.json . По сути, это просто значение по умолчанию из предустановки clang++ и ничего не меняло, если я правильно его помню.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "clang++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: clang++ build active file",
            "miDebuggerPath": "/usr/bin/lldb-mi"
        }
    ]
}

@WardenGnaw Вы можете попробовать.

Все 13 Комментарий

Да, это было бы как бы комбинацией https://code.visualstudio.com/docs/cpp/config-clang-mac (с изменением ссылок Mac на Linux) и https://code.visualstudio.com/docs/ cpp / config-linux (ссылки gcc изменены на clang). Языковая служба должна работать с clang в Linux, и я использовал gdb для отладки программ, скомпилированных с помощью clang, в Linux, но я не уверен, поддерживается ли отладка LLDB в Linux, как на Mac ( @WardenGnaw об этом знает).

Чтобы отладка LLDB работала в Linux, потребуется получить исполняемый файл lldb-mi .

Как только вы это сделаете, вам нужно будет изменить конфигурацию launch.json с помощью:

{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}

Спасибо @ sean-mcmanus.

Привет, @WardenGnaw , я заметил, что вы упомянули это в более старом закрытом тикете. Но мне так и не удалось заставить это работать на моей машине.

Я нашел файл lldb-mi в /usr/bin/ но не смог заставить его работать, когда я нацелился на него с помощью "miDebuggerPath": "usr/bin/lldb-mi" . Что-то о невозможности найти lldb-mi-10 ?

Это звонит в колокол?

О, я думаю, что это ошибка на стороне Ubuntu https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387

Поскольку Ubuntu 20.04, похоже, забыл упаковать lldb-mi-10 с lldb я попытался использовать "miDebuggerPath": "usr/bin/lldb-mi-9" после установки lldb-9 , но безрезультатно.

@WardenGnaw, можете ли вы подтвердить, что "miDebuggerPath": "usr/bin/lldb-mi-9" работает на вас? Должен ли он быть конкретно "miDebuggerPath": "usr/bin/lldb-mi" чтобы отладка работала?

Это не обязательно должно быть конкретно «usr / bin / lldb-mi», оно просто должно указывать на действующий отладчик, который использует интерфейс mi.

Один из способов проверить - запустить двоичный файл и посмотреть, отвечает ли он на -interpreter-exec console "version"

@WardenGnaw , похоже, lldb-mi больше не будет поддерживаться в Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387

Есть ли какие-то решения для этого? Было бы очень признательно, если бы мы могли использовать lldb с VS Code.

В настоящее время мы ограничены использованием более старых версий lldb с VS Code, и, чтобы быть ясным, я даже не смог заставить lldb-mi-9 правильно работать в Ubuntu 20.04 с VS Code.

Для macOS мы создаем LLDB-MI и отправляем собственную копию расширения. Однако мы используем lldb.framework из XCode, чтобы не беспокоиться об обновлении lldb каждый раз, когда появляется новая версия.

Один из обходных путей - создать свою собственную копию и указать ей свою конфигурацию запуска с помощью miDebuggerPath . Я исследую, работает ли создание копии в Linux с установленным lldb с расширением.

Обновление: я только что получил сборку lldb-mi для Ubuntu 20.04, но столкнулся с кучей проблем во время выполнения.

В этой сборке могут быть поставлены liblldb.so и lldb-server.
Требования к станку должны будут иметь:

  • лязгать
  • libpython2.7
  • libncurses5

_Все еще ведется расследование_

Я также встречал аналогичную ситуацию, когда пытался использовать clang в vscode в Linux (Ubuntu 20.04), и он сообщает мне, что miDebuggerPath - недопустимый путь. Так это действительно ошибка?

@zbhxlj Группа llvm решила не поставлять lldb-mi начиная с llvm-toolchain-10.

Чтобы использовать clang и lldb, пользователям нужно будет собрать lldb-mi из его источника и указать miDebuggerPath на построенный двоичный файл lldb-mi .

@WardenGnaw можно скомпилировать без python и без проклятий и посмотреть, соответствует ли это минимальному набору требований.

Что касается clang, я не считаю необоснованным предполагать, что clang существует для использования с LLDB-MI.

Хорошо, я протестировал еще раз, и он работает с Ubuntu 18.04.

Вот как:

  1. Установите следующие пакеты через apt
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. Создавайте программные ссылки для исполняемых файлов, чтобы все работало должным образом
sudo ln -s /usr/bin/clang-10 /usr/bin/clang
sudo ln -s /usr/bin/clang++-10 /usr/bin/clang++
sudo ln -s /usr/bin/lldb-10 /usr/bin/lldb
# This one is a bit strange but VSCode only looks for the name `lldb-server-10.0.0` but not `lldb-server-10`
sudo ln -s /usr/bin/lldb-server-10 /usr/bin/lldb-server-10.0.0
  1. Соберите исполняемый файл lldb-mi из исходного кода
git clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
cmake .
cmake --build .
sudo cp src/lldb-mi /usr/bin/

Это должно быть так. А вот и мои launch.json . По сути, это просто значение по умолчанию из предустановки clang++ и ничего не меняло, если я правильно его помню.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "clang++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: clang++ build active file",
            "miDebuggerPath": "/usr/bin/lldb-mi"
        }
    ]
}

@WardenGnaw Вы можете попробовать.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги