VSCode远程连接Ubuntu使用LLDB调试程序
VSCode已经具有远程开发的能力,可以使用SSH连接到Linux/MacOS进行远程开发,包括编译与调试,只需要安装Remote Development
插件即可,如果想使用CMake管理项目,则需要将VSCode的CMake
以及CMake Tools
插件安装在远程机器上。
Linux上的常规编译调试工具为GCC以及GDB工具链,如果想使用Clang和LLDB工具链,则需要使用选装,本文笔者以Ubuntu 22.04为例进行介绍。
一、安装Clang、LLDB
Ubuntu 22.04目前默认的Clang版本为14,可以使用的新版本为15,笔者使用15版本,使用下面的命令进行安装:
1sudo apt install llvm-15
2sudo apt install clang-15
3sudo apt install lldb-15
如果使用14版本,则直接使用不带版本的命令:
1sudo apt install llvm
2sudo apt install clang
3sudo apt install lldb
如果是安装的非默认版本,可能需要自行进行链接,否则会找不到命令:
1sudo ln -s /usr/lib/llvm-15/bin/clang /usr/bin/clang
2sudo ln -s /usr/lib/llvm-15/bin/clang++ /usr/bin/clang++
3sudo ln -s /usr/lib/llvm-15/bin/lldb /usr/bin/lldb
4sudo ln -s /usr/lib/llvm-15/bin/lldb-server-15.0.7 /usr/bin/
二、安装lldb-mi
由于VSCode的调试接口是按GDB的接口开发的,所以需要一个适配器,lldb-mi
就是干这个事的。以前lldb-mi
是属于LLVM
项目的一部分,后面LLVM
将之剔除掉了,成了一个单独的项目
https://github.com/lldb-tools/lldb-mi,有一个
邮件列表进行了说明。
lldb-mi
独立后,ubuntu并没有进行编译打包,所以需要自行编译安装。
按照说明,使用下面的命令进行编译
1git clone https://github.com/lldb-tools/lldb-mi.git
2cd lldb-mi
3mkdir build
4cd build
5cmake .. -DCMAKE_BUILD_TYPE:STRING=Release
结果会报错:
1[CMake] CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
2[CMake] Please set them or make sure they are set and tested correctly in the CMake files:
3[CMake] lib_lldb
4[CMake] linked by target "lldb-mi" in directory XXXXXXXX
这是因为没有安装lldb
的开发包:
1sudo apt install liblldb-15-dev
cmake
配置成功后,使用下面的命令编译:
1cmake --build .
编译成功后将之复制到/usr/bin/
。
三、测试
此时使用lldb
或者lldb-mi
会报错:
1Traceback (most recent call last):
2 File "<string>", line 1, in <module>
3ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
这是应该是LLDB的BUG,路径问题,使用lldb -P
来查看查找的路径:
1lldb -P
2Traceback (most recent call last):
3 File "<string>", line 1, in <module>
4ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
5/usr/lib/local/lib/python3.10/dist-packages
使用下面的命令做一个软链接即可。
1sudo mkdir -p /usr/lib/local/lib/python3.10/dist-packages
2sudo ln -s /usr/lib/llvm-15/lib/python3.10/dist-packages/lldb /usr/lib/local/lib/python3.10/dist-packages
在VSCode的launch.json
中添加如下配置即可使用lldb
进行调试了:
1{
2 {
3 "name": "(lldb) 启动",
4 "type": "cppdbg",
5 "request": "launch",
6 "program": "${workspaceFolder}/build/t",
7 "args": [],
8 "stopAtEntry": false,
9 "cwd": "${fileDirname}",
10 "environment": [],
11 "externalConsole": false,
12 "MIMode": "lldb",
13 "miDebuggerPath": "/usr/bin/lldb-mi",
14 "setupCommands": [
15 {
16 "description": "为 gdb 启用整齐打印",
17 "text": "-enable-pretty-printing",
18 "ignoreFailures": true
19 },
20 {
21 "description": "将反汇编风格设置为 Intel",
22 "text": "setting set target.x86-disassembly-flavor intel",
23 "ignoreFailures": true
24 }
25 ]
26 },
27}
注意:VSCode目前还不能使用LLDB进行反汇编调试,一反汇编调试则会卡死,需要重启VSCode
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2023/2023-05-30-VSCode远程连接Ubuntu使用LLDB调试程序/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。