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

news2024/11/24 11:37:49

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版本,使用下面的命令进行安装:

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 "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'

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

lldb -P
Traceback (most recent call last):
  File "<string>", 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot自定义打印横幅

众所周知&#xff0c;springboot项目启动的时候会打印横幅&#xff0c;横幅内容就是spring; 而spring boot提供了一个Banner接口用于处理启动横幅&#xff0c;默认情况下启动会打印如下信息 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( (…

分布式系统

一.分布式理论基础 1.CAP理论 CAP定理是分布式系统中的重要理论&#xff0c;在一个分布式系统中最多只能同时满足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition tolerance&#xff09;这三项中的…

以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取

【硬件环境】 Imx6ul 【Linux kernel版本】 Linux4.1.15 【以太网phy】 Realtek8201f 1.1. 以太网驱动probe流程 1.1 mii_bus初始化以及phy id的获取 然后进行mii的一些初始化fec_enet_mii_init(pdev); 主要是对struct mii_bus这里的成员进行初始化 并且会做注册mdiobus的…

小笔记-简单但够用系列_jupyter notebook 的重新安装问题

文章目录 目的目标步骤 目的 做程序开发时&#xff0c;想到 jupyter notebook 的浏览器交互式执行&#xff0c;决定再次启用放置许久的 jupyter notebook。 但太久没有执行的 jupyter notebook 在打开页面有一旦打开或创建新的 python&#xff0c;就自动报错退出。 使用过往经…

Blender UV展开流程

目录 1. UV1.1 blender默认物体1.2 创建物体1.3 UV参考图1.4 标记缝合边1.5 UV拉伸1.6 孤岛模式 1. UV 1.1 blender默认物体 默认物体已经自动生成UV 在UV编辑工作区&#xff0c;编辑模式&#xff0c;全选物体在左边自动展开UV 在物体数据属性-UV贴图-存在默认的UV贴图&#…

华为OD机试真题B卷 Java 实现【输入整型数组和排序标识,对其元素按照升序或降序进行排序】,附详细解题思路

一、题目描述 输入整型数组和排序标识,对其元素按照升序或降序进行排序 数据范围: 1≤n≤1000 ,元素大小满足 0≤val≤100000 。 二、输入描述 第一行输入数组元素个数;第二行输入待排序的数组,每个数用空格隔开;第三行输入一个整数0或1。0代表升序排序,1代表降序排序…

UOS桌面系统使用RLinux恢复数据

UOS桌面系统使用RLinux恢复数据 一、工具介绍二、注意事项三、准备四、制作live系统启动盘五、拷贝文件六、进入live系统一、工具介绍 R-Linux 是一款用于 Linux 和某些 Unixes 操作系统 Ext2/Ext3/Ext4 FS 文件系统的免费文件恢复实用工具。R-Linux 与 R-Studio 使用相同的 I…

如何使用ArcGIS进行选房分析

无论是城市规划布局研究&#xff0c;还是为自己找一个心仪的住房&#xff0c;都需要综合考虑购物、医疗、教育和休闲等诸多因素&#xff0c;若单纯依靠人力去寻找&#xff0c;十分的麻烦和耗时。 此时ArcGIS强大的分析功能就凸显了出来&#xff0c;我们可以通过空间上的距离关…

chatgpt赋能python:Python中同一键可以对应多个值吗?

Python中同一键可以对应多个值吗&#xff1f; Python是一门简单、易学且功能强大的编程语言&#xff0c;它广泛应用于Web开发、机器学习、数据科学等领域。Python的数据结构中的字典&#xff08;dictionary&#xff09;是其中一个非常有用的数据结构&#xff0c;它可以存储键值…

解锁高并发世界:深入探索并发编程和线程池技术的实用指南

《深入理解高并发编程:JDK核心技术》这本书是一本非常实用的编程指南&#xff0c;旨在帮助读者深入理解并发编程和线程池技术。笔者将目录分为两大部分&#xff1a;基础篇、工具篇和线程池技术篇。 这本书提供了广泛的内容覆盖和深入的讲解&#xff0c;适合读者在高并发编程领…

MT8183核心板 MTK8183处理器规格参数

MT8183核心板集成了多项高性能硬件&#xff0c;是一款功耗低、高效能的芯片&#xff0c;可以支持高质量的平板电脑平台设计。该芯片结合了一个八核CPU&#xff0c;其中包括四个Arm Cortex-A73的“大核心”和四个Cortex-A53核心&#xff0c;全部运行速度高达2GHz&#xff0c;还有…

chatgpt赋能python:Python中的//2

Python中的//2 Python是一种广泛使用的动态编程语言&#xff0c;因为它功能强大&#xff0c;易于学习和使用。Python在每个程序员的工具包中占据重要位置&#xff0c;这是因为Python可以用于构建各种应用程序。 本文将讨论Python中的//2运算符&#xff0c;解释其作用和用法&a…

抖音seo源码开发-抖音搜索优化系统-视频批量剪辑系统搭建

抖音seo源码开发&#xff0c;抖音seo开源定制&#xff0c;抖音seo源码交付&#xff0c;抖音seo源码开发是一项重要的技术&#xff0c;可以将您的抖音号排名提升到更高的位置&#xff0c;帮助您吸引更多的关注和粉丝。SEO源码开发需要具备一定的技术和经验&#xff0c;因此建议在…

跨模态检索综述

跨模态检索问题的描述 图1&#xff1a;跨 模 态 检 索 的 形 式 。 跨 模 态 检索 允 许 查 询 样 例 和 候 选 对 象 属 于 不 同 模 态 的 数 据 &#xff0c; 比 如 图 像搜索文本 &#xff0c; 文 本 搜 索 视 频 等 &#xff0c; 这 种 灵 活 多 变 的 检索方 式 能 够 满…

2023 年 PMP 考试难不难?

PMP 真的不难&#xff0c;目前的考试都只有选择题&#xff0c;往后可能会增加别的题型&#xff08;2023,8 月份启用第七版教材&#xff09;&#xff0c; 加入了很多 ACP 敏捷管理的内容&#xff0c;而且 敏捷混合题型占到了 50%。 我从新考纲考完下来&#xff0c;最开始也被折…

【计算机组成原理】第八章 输入输出系统

系列文章目录 第一章 计算系统概论 第二章 运算方法和运算器 第三章 多层次的存储器 第四章 指令系统 第五章 中央处理器 第六章 总线系统 第七章 外围设备 第八章 输入输出系统 文章目录 系列文章目录前言第八章 输入输出系统8.1外围设备的定时方式和信息交换方式8.2程序查询…

33.C++函数重载

今天进行了新的学习。 目录 1.什么是函数重载&#xff1f; 2.函数重载的规则 代码演示&#xff1a; 分析&#xff1a; 3.为什么C能进行函数重载 例如&#xff1a; 调用约定&#xff1a; 4.extern关键字 1.什么是函数重载&#xff1f; 在同一个作用域内&#xff0c…

Nodejs安装以及环境变量配置

Nodejs安装以及环境变量配置 1.下载Nodejs1.1最新版下载1.2历史版本下载 2.安装3.验证4.环境变量配置5.npm下载设置6.测试6.设置国内镜像提高下载速度 1.下载Nodejs 1.1最新版下载 直接官网下载&#xff1a;https://nodejs.org/zh-cn/download 根据自己的需求&#xff0c;选择…

关于两个项目用的不是同一个node的解决 办法

问题描述&#xff1a; 两个前端项目&#xff0c;使用的不是同一个版本的node 和npm &#xff0c;导致总有一个项目启动不了&#xff0c;如何解决这个问题呐&#xff1f; 解决工具&#xff1a; nvm&#xff1a;node 版本管理器&#xff0c;也就是说&#xff1a;一个 nvm 可以管理…

Dubbo高可用

1.zookeeper宕机与dubbo直连 1.1.现象&#xff1a;zookeeper注册中心宕机&#xff0c;还可以消费dubbo暴露的服务。 原因&#xff1a; 监控中心宕掉不影响使用&#xff0c;只是丢失部分采样数据数据库宕掉后&#xff0c;注册中心仍能通过缓存提供服务列表查询&#xff0c;但…