返回

干货|LLDB用法全解:进阶利器,成就“C++调试专家”

IOS

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 进行调试。