0

0

C++的LLDB调试器怎么用_在macOS和Linux下使用LLDB调试C++程序入门

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-12-08 23:15:06

|

502人浏览过

|

来源于php中文网

原创

LLDB是LLVM项目中的现代调试器,作为GDB的替代品,广泛用于macOS和Linux下的C++开发。它响应迅速,与Clang深度集成,支持丰富的调试功能。使用前需用clang++ -g -O0等选项编译以生成调试信息。通过lldb your_program启动后,可用b main设断点,r运行程序,c继续执行,s单步进入,n单步跳过,bt查看调用栈,fr v显示局部变量,p var打印值,expr修改变量或执行表达式。macOS系统自带LLDB,Linux需手动安装如sudo apt install lldb,并注意ptrace权限设置。结合VS Code、Vim或CLion可实现图形化调试体验。支持快速测试代码片段,如expr std::vector v = {1,2,3}; v.size()。尽管入门略难,但命令更一致,对C++模板和STL容器输出友好,熟练后显著提升调试效率。

c++的lldb调试器怎么用_在macos和linux下使用lldb调试c++程序入门

LLDB 是 LLVM 项目中的下一代调试器,作为 GDB 的现代替代品,广泛用于 macOS 和逐渐支持 Linux 环境。它功能强大、响应迅速,并与 Clang 编译器深度集成。如果你在 macOS 或 Linux 上开发 C++ 程序,掌握 LLDB 能显著提升调试效率。

编译程序时启用调试信息

使用 LLDB 前,必须确保你的 C++ 程序以调试模式编译,这样才能查看变量、单步执行和设置断点。

推荐编译命令:

立即学习C++免费学习笔记(深入)”;

  • clang++ -g -O0 -std=c++17 your_program.cpp -o your_program

说明:

  • -g:生成调试符号(必须)
  • -O0:关闭优化,避免代码被重排导致调试混乱
  • -std=c++17:指定 C++ 标准(按需调整)

启动 LLDB 并加载程序

你可以用多种方式启动 LLDB:

  • lldb your_program —— 加载已编译的可执行文件
  • lldb -- ./your_program arg1 arg2 —— 同时传入运行参数
  • 进入 LLDB 后再用 file your_program 加载程序

进入 LLDB 后你会看到类似提示符:

(lldb)

常用调试命令详解

以下是在 LLDB 中最实用的基础命令:

设置断点

  • breakpoint set --name main 或简写 b main —— 在 main 函数入口打断点
  • b MyCppClass::doSomething —— 在类成员函数设断点
  • b your_file.cpp:25 —— 在指定文件第 25 行设断点

运行程序

  • runr —— 启动程序(若设置了参数,会自动传入)
  • 程序会在第一个断点处暂停

控制执行流程

PhotoG
PhotoG

PhotoG是全球首个内容营销端对端智能体

下载
  • continuec —— 继续运行直到下一个断点
  • steps —— 单步进入函数内部
  • nextn —— 单步跳过函数调用
  • finish —— 执行完当前函数并返回

查看调用

  • bt —— 查看当前调用堆栈(backtrace)
  • frame variablefr v —— 显示当前栈帧内的局部变量

检查和修改变量

  • print myVariablep myVariable —— 输出变量值
  • expr myVar = 42 —— 修改变量值(运行时)
  • 支持 C++ 表达式:p vec.size()p ptr->getName()

退出调试

  • quitq —— 退出 LLDB(若程序正在运行会提示确认)

在 macOS 与 Linux 下的差异注意点

macOS
LLDB 是 Xcode 的默认调试器,系统自带,开箱即用。终端中直接输入 lldb 即可使用。

Linux
需要手动安装 LLDB。常见方法:

  • Ubuntu/Debian:sudo apt install lldb
  • Fedora:sudo dnf install lldb

部分发行版可能需要额外配置符号解析或启用 core dump 支持。

Linux 上若遇到权限问题(如无法 attach 到进程),可检查 /proc/sys/kernel/yama/ptrace_scope 设置。

结合编辑器使用更高效

虽然命令行很强大,但结合编辑器体验更好:

  • VS Code:安装 C/C++ 插件,配置 launch.json 使用 "type": "lldb",图形化调试界面非常友好
  • Vim/Neovim:通过 Vimspectornvim-dap 集成 LLDB
  • CLion:支持切换为 LLDB 作为调试后端(macOS 默认)

这些工具底层仍调用 LLDB,但提供源码级可视化操作。

小技巧:快速调试一段代码

不想编译成文件?可以用 LLDB 直接运行临时代码(适合简单测试):

  • 先编译带调试信息的可执行文件一次
  • 之后修改代码重新编译,LLDB 中输入 kill 停止,再 run 会自动加载新版本

或者使用 expression 命令测试表达式:

(lldb) expr std::vector v = {1,2,3}; v.size()

基本上就这些。LLDB 初学门槛略高于 GDB,但命令更一致,对 C++ 支持更好,尤其是模板和 STL 容器的美观输出(得益于数据格式化脚本)。多练几次基本操作,很快就能上手。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

412

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

256

2025.10.24

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

390

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.9万人学习

C 教程
C 教程

共75课时 | 4.1万人学习

C++教程
C++教程

共115课时 | 12.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号