干货|LLDB用法全解:进阶利器,成就“C++调试专家”
2023-10-16 17:36:58
LLDB 简介
LLDB 是 Low Level Debugging 的缩写,顾名思义,它是一款底层调试器。相较于 GDB 这款大家熟悉的调试器,LLDB 是苹果公司开源自研的调试器。
LLVM 是构架编译器 (Compiler) 的框架系统,LLDB 是 LLVM 的调试器组件,因此,LLDB 可以成为 GDB 的替代品,为应用程序进行深度调试。
虽然 LLDB 没有 GDB 那么知名,但从实用性方面来说,LLDB 是能够替代 GDB 的。
LLDB 优势
LLDB 具备以下优点:
-
跨平台性 :LLDB 可以跨平台使用,兼容 macOS、Windows、以及 Linux 等系统。
-
调试 Python :LLDB 可以用来调试 Python,而 GDB 仅支持 C++。
-
灵活性高 :LLDB 能够配合多种编译器对应用程序进行调试。
安装 LLDB
可以通过官网 下载 LLDB 并安装。
基本操作
以下列举 LLDB 常用基本操作:
-
lldb 程序名
:调试可执行程序。 -
b 断点序号 断点设置
:设置断点。 -
d 断点序号
:删除断点。 -
l 行号
:显示代码。 -
p 断点序号
:打印变量值。 -
n
:执行代码,并停留在下一个断点处。 -
c
:继续执行程序。
调试示例
接下来,我们通过一个小程序示例,来看 LLDB 如何进行调试:
#include <iostream>
using namespace std;
int main()
{
int x = 1, y = 2;
int& r = x;
r++; // r++ 等同于 x++
cout << x << " " << y << endl; // 输出:2 2
return 0;
}
-
在该程序中,我们想跟踪变量
x
的值。 -
我们可以通过
lldb -s:python3.6 your_program
启用 LLDB,并将 Python 脚本作为 LLDB 的脚本。 -
接下来,我们可以通过
b main
来设置断点,让程序在进入main
函数时停止执行。 -
然后,我们可以通过
p $r
来打印变量r
的值。 -
接下来,我们可以通过
n
来执行代码,并停留在下一个断点处。 -
最后,我们可以通过
c
来继续执行程序。
通过以上步骤,我们可以成功调试这个小程序。
结语
LLDB 是一款功能强大的调试器,它可以跨平台使用,并支持调试 Python。
LLDB 的基本操作包括设置、删除断点,打印变量值,以及执行和继续执行程序。
通过一个示例程序,我们演示了如何使用 LLDB 进行调试。