В настоящее время поддержка LLDB в Linux для VS Code отсутствует. Это явно не работает.
Официальной документации о том, как начать работу с Clang в Linux с помощью vscode-cpptools, также нет.
Было бы замечательно добавить официальную поддержку Clang / LLDB в Linux. Было бы неплохо распространить это на Windows благодаря кроссплатформенности LLVM.
Да, это было бы как бы комбинацией 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.
Требования к станку должны будут иметь:
_Все еще ведется расследование_
Я также встречал аналогичную ситуацию, когда пытался использовать 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.
Вот как:
apt
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
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
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 Вы можете попробовать.
Самый полезный комментарий
Хорошо, я протестировал еще раз, и он работает с Ubuntu 18.04.
Вот как:
apt
lldb-mi
из исходного кодаЭто должно быть так. А вот и мои
launch.json
. По сути, это просто значение по умолчанию из предустановкиclang++
и ничего не меняло, если я правильно его помню.@WardenGnaw Вы можете попробовать.