返回

剖析 LLDB 调试指令(上)

IOS

前言

在日常开发中,使用 Xcode 进行编码和调试时,我们经常使用断点配合 LLDB 指令来检查变量信息。本篇文章将深入浅出地介绍 LLDB 的常用调试指令,帮助你提升调试效率。

LLDB 基础

LLDB 是一款功能强大的调试器,用于在 macOS 和 Linux 系统上调试 C、C++、Objective-C、Swift 和 Rust 代码。它内置于 Xcode 中,但也可以独立使用。

要进入 LLDB,可以在 Xcode 中设置断点,然后运行程序。当程序在断点处停止时,LLDB 控制台将自动打开。你也可以在终端中使用 lldb 命令手动启动 LLDB。

断点指令

断点指令是 LLDB 中最常用的指令。它们允许你设置、删除和管理断点。

设置断点

最基本的断点指令是 breakpoint set。它允许你根据行号、函数名或正则表达式设置断点。

例如,要设置一个断点在第 17 行,可以使用以下指令:

(lldb) breakpoint set -l 17

删除断点

要删除断点,可以使用 breakpoint delete 指令。你可以指定断点编号或断点地址来删除它。

例如,要删除编号为 3 的断点,可以使用以下指令:

(lldb) breakpoint delete 3

查看断点

要查看已设置的断点列表,可以使用 breakpoint list 指令。它将显示每个断点的信息,包括编号、地址、行号和条件(如果已设置)。

(lldb) breakpoint list

变量指令

除了断点指令,LLDB 还提供了一系列变量指令,用于检查变量的值。

打印变量

最常用的变量指令是 print。它允许你打印变量的值。

例如,要打印变量 x 的值,可以使用以下指令:

(lldb) print x

设置变量

你还可以使用 set 指令修改变量的值。

例如,要将变量 y 设置为 10,可以使用以下指令:

(lldb) set y = 10

其他变量指令

还有许多其他有用的变量指令,例如:

  • frame variable:打印当前帧中所有局部变量的值。
  • expr:求一个表达式的值。
  • watchpoint set:设置一个监视点,当变量的值改变时触发。

继续执行

一旦你设置了断点并检查了变量,就可以使用 continue 指令继续执行程序。

(lldb) continue

总结

本文介绍了 LLDB 的常用调试指令,包括断点指令和变量指令。掌握这些指令将大大提高你在调试代码时的效率和准确性。在下篇文章中,我们将介绍 LLDB 的高级调试指令,包括反汇编、线程管理和内存检查。