当前,在Linux上缺少针对VS Code的LLDB支持。 显然是行不通的。
也没有官方文档说明如何使用vscode-cpptools在Linux上开始使用Clang。
在Linux上添加对Clang / LLDB的官方支持绝对是一件很棒的事。 多亏了LLVM的跨平台特性,将其扩展到Windows也将很棒。
是的,它就像是https://code.visualstudio.com/docs/cpp/config-clang-mac(Mac参考更改为Linux)和https://code.visualstudio.com/docs/ cpp / config-linux (将gcc引用更改为clang)。 语言服务应该在Linux上可以与clang一起使用,并且我已经使用gdb在Linux上调试了用clang编译的程序,但是我不确定Linux是否像在Mac上一样支持LLDB调试( @WardenGnaw会知道)。
要使LLDB调试在Linux上工作,将需要获取lldb-mi
可执行文件。
一旦有了,就需要使用以下命令修改launch.json
配置:
{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}
谢谢@ sean-mcmanus。
嘿@WardenGnaw ,我注意到您在一张较旧的封闭票中提到了这一点。 但是我从来没有设法在我的机器上完成这项工作。
我在/usr/bin/
找到lldb-mi
文件,但是当我使用"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
打包,因此我在安装lldb-9
之后尝试使用"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 ,看起来在Ubuntu上不再支持lldb-mi了:
https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
有什么解决方案吗? 如果我们可以将lldb与VS Code一起使用,将不胜感激。
从目前的情况来看,我们仅限于将lldb的旧版本与VS Code一起使用,并且要明确地说,我什至无法使lldb-mi-9在带有VS Code的Ubuntu 20.04上正常工作。
对于macOS,我们构建LLDB-MI并为扩展名提供我们自己的副本。 但是,我们使用XCode中的lldb.framework不必担心每次有新版本时都会更新lldb。
一种解决方法是构建自己的副本,并使用miDebuggerPath
将启动配置指向该副本。 我将研究在Linux上构建副本是否与已安装的扩展名为lldb的作品一起使用。
更新:我刚刚得到了为Ubuntu 20.04构建lldb-mi
的构建,但是遇到了很多运行时问题。
此版本可能必须交付liblldb.so和lldb-server。
对机器的要求将必须具有:
_仍在调查中_
当我尝试在Linux上的vscode中使用clang时,我也遇到了类似的情况(Ubuntu 20.04),它告诉我miDebuggerPath是无效路径。 那实际上是一个错误吗?
@zbhxlj llvm组已决定不从llvm-toolchain-10开始lldb-mi
。
为了使用clang和lldb,用户将需要从其源代码构建lldb-mi ,并将miDebuggerPath
指向已构建的lldb-mi
二进制文件。
@WardenGnaw,您可以在没有python且没有curses的情况下进行编译,并查看其是否满足最低要求。
至于clang,我认为假设存在用于LLDB-MI的clang并没有道理
好的,所以我再次进行了测试,可以在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您可能想尝试一下。