VSCode远程连接Ubuntu使用LLDB调试程序

VSCode已经具有远程开发的能力,可以使用SSH连接到Linux/MacOS进行远程开发,包括编译与调试,只需要安装Remote Development插件即可,如果想使用CMake管理项目,则需要将VSCode的CMake以及CMake Tools插件安装在远程机器上。

VSCode远程连接Ubuntu使用LLDB调试程序_第1张图片

Linux上的常规编译调试工具为GCC以及GDB工具链,如果想使用Clang和LLDB工具链,则需要使用选装,本文笔者以Ubuntu 22.04为例进行介绍。

一、安装Clang、LLDB

Ubuntu 22.04目前默认的Clang版本为14,可以使用的新版本为15,笔者使用15版本,使用下面的命令进行安装:

sudo apt install llvm-15
sudo apt install clang-15
sudo apt install lldb-15

如果使用14版本,则直接使用不带版本的命令:

sudo apt install llvm
sudo apt install clang
sudo apt install lldb

如果是安装的非默认版本,可能需要自行进行链接,否则会找不到命令:

sudo ln -s /usr/lib/llvm-15/bin/clang /usr/bin/clang
sudo ln -s /usr/lib/llvm-15/bin/clang++ /usr/bin/clang++
sudo ln -s /usr/lib/llvm-15/bin/lldb /usr/bin/lldb
sudo 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并没有进行编译打包,所以需要自行编译安装。

按照说明,使用下面的命令进行编译

git clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE:STRING=Release

结果会报错:

[CMake] CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
[CMake] Please set them or make sure they are set and tested correctly in the CMake files:
[CMake] lib_lldb
[CMake]     linked by target "lldb-mi" in directory XXXXXXXX

这是因为没有安装lldb的开发包:

sudo apt install liblldb-15-dev

cmake配置成功后,使用下面的命令编译:

cmake --build .

编译成功后将之复制到/usr/bin/

三、测试

此时使用lldb或者lldb-mi会报错:

Traceback (most recent call last):
  File "", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'

这是应该是LLDB的BUG,路径问题,使用lldb -P来查看查找的路径:

lldb -P
Traceback (most recent call last):
  File "", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
/usr/lib/local/lib/python3.10/dist-packages

使用下面的命令做一个软链接即可。

sudo mkdir -p /usr/lib/local/lib/python3.10/dist-packages
sudo ln -s /usr/lib/llvm-15/lib/python3.10/dist-packages/lldb /usr/lib/local/lib/python3.10/dist-packages

在VSCode的launch.json中添加如下配置即可使用lldb进行调试了:

{
	{
			"name": "(lldb) 启动",
			"type": "cppdbg",
			"request": "launch",
			"program": "${workspaceFolder}/build/t",
			"args": [],
			"stopAtEntry": false,
			"cwd": "${fileDirname}",
			"environment": [],
			"externalConsole": false,
			"MIMode": "lldb",
			"miDebuggerPath": "/usr/bin/lldb-mi",
			"setupCommands": [
				{
					"description": "为 gdb 启用整齐打印",
					"text": "-enable-pretty-printing",
					"ignoreFailures": true
				},
				{
					"description": "将反汇编风格设置为 Intel",
					"text": "setting set target.x86-disassembly-flavor intel",
					"ignoreFailures": true
				}
			]
		},
}

注意:VSCode目前还不能使用LLDB进行反汇编调试,一反汇编调试则会卡死,需要重启VSCode

你可能感兴趣的:(Linux,IDE,LLVM/Clang,ubuntu,vscode,clang,lldb,lldb-mi)