剖析 LLDB 调试指令(上)
2023-12-17 11:00:17
前言
在日常开发中,使用 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 的高级调试指令,包括反汇编、线程管理和内存检查。