Atualmente não há suporte para LLDB no Linux para VS Code. Simplesmente não funciona.
Também não há documentação oficial sobre como começar a usar o Clang no Linux usando vscode-cpptools.
Adicionar suporte oficial para Clang / LLDB no Linux seria absolutamente incrível. Estender isso para o Windows também seria ótimo, graças à natureza de plataforma cruzada do LLVM.
Sim, seria uma espécie de combinação de https://code.visualstudio.com/docs/cpp/config-clang-mac (com as referências do Mac mudando para Linux) e https://code.visualstudio.com/docs/ cpp / config-linux (com referências gcc alteradas para clang). O serviço de linguagem deve funcionar com clang no Linux, e usei gdb para depurar programas compilados com clang no Linux, mas não tenho certeza se a depuração de LLDB é suportada no Linux como no Mac ( @WardenGnaw saberia).
Fazer a depuração do LLDB funcionar no Linux exigiria a obtenção do executável lldb-mi
.
Assim que tiver isso, você precisará modificar a configuração launch.json
com:
{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}
Obrigado @ sean-mcmanus.
Ei @WardenGnaw , percebi que você mencionou isso em um tíquete fechado mais antigo. Mas nunca consegui fazer isso funcionar na minha máquina.
Encontrei lldb-mi
arquivo em /usr/bin/
mas não consegui fazê-lo funcionar quando o direcionei usando "miDebuggerPath": "usr/bin/lldb-mi"
. Algo sobre não conseguir encontrar lldb-mi-10
?
Isso soa um sino?
Oh, eu acho que é um bug do lado do Ubuntu https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
Como o Ubuntu 20.04 parece ter esquecido de empacotar lldb-mi-10
com lldb
, tentei usar "miDebuggerPath": "usr/bin/lldb-mi-9"
depois de instalar lldb-9
, mas sem sucesso.
@WardenGnaw pode confirmar se "miDebuggerPath": "usr/bin/lldb-mi-9"
funciona para você? Tem que ser especificamente "miDebuggerPath": "usr/bin/lldb-mi"
para que a depuração funcione?
Não precisa ser especificamente "usr / bin / lldb-mi", apenas precisa apontar para um depurador válido que usa a interface mi.
Uma maneira de testar é rodar o binário e ver se ele responde a -interpreter-exec console "version"
@WardenGnaw , não parece que lldb-mi terá mais suporte no Ubuntu:
https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
Existem soluções para isso? Seria muito grato se pudéssemos usar lldb com o VS Code.
Do jeito que está, estamos confinados a usar versões mais antigas do lldb com VS Code e, para ficar claro, não consegui nem mesmo fazer o lldb-mi-9 funcionar corretamente no Ubuntu 20.04 com VS Code.
Para o macOS, criamos o LLDB-MI e enviamos nossa própria cópia para a extensão. No entanto, usamos o lldb.framework do XCode para não precisar se preocupar em atualizar o lldb toda vez que há uma nova versão.
Uma solução alternativa será construir sua própria cópia e apontar sua configuração de inicialização para ela com miDebuggerPath
. Vou investigar se a construção de uma cópia no linux funciona com um lldb instalado com a extensão.
Atualização: Acabei de conseguir uma compilação de lldb-mi
para o Ubuntu 20.04, mas encontrando vários problemas de tempo de execução.
Esta compilação pode ter que enviar liblldb.so e lldb-server.
Os requisitos do machile devem ter:
_Ainda investigando_
Eu também encontrei uma situação semelhante quando tentei usar o clang em vscode no Linux (Ubuntu 20.04) e ele me diz que miDebuggerPath é um caminho inválido. Então é realmente um bug?
@zbhxlj O grupo llvm decidiu não enviar lldb-mi
começando com llvm-toolchain-10.
Para usar o clang e o lldb, os usuários precisarão criar lldb-mi a partir de sua fonte e apontar miDebuggerPath
para o binário lldb-mi
construído.
@WardenGnaw você pode compilar sem python e sem maldições e ver se isso atende ao conjunto mínimo de requisitos.
Quanto ao clang, não acho irracional supor que ele exista para uso com o LLDB-MI
Ok, então eu testei mais uma vez e estou funcionando no Ubuntu 18.04.
Veja como:
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
partir da fontegit clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
cmake .
cmake --build .
sudo cp src/lldb-mi /usr/bin/
Deve ser isso. E aqui está meu launch.json
. Basicamente, apenas o padrão da predefinição clang++
e não alterei nada, se bem me lembro.
{
// 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 Você pode tentar.
Comentários muito úteis
Ok, então eu testei mais uma vez e estou funcionando no Ubuntu 18.04.
Veja como:
apt
lldb-mi
partir da fonteDeve ser isso. E aqui está meu
launch.json
. Basicamente, apenas o padrão da predefiniçãoclang++
e não alterei nada, se bem me lembro.@WardenGnaw Você pode tentar.