LLDB ① 介绍和流程控制

2022-03-26  本文已影响0人  _涼城

什么是 LLDB

    LLDB(Low Lever Debug) 是 macOS 上 Xcode 中的默认调试器,支持在桌面和 iOS 设备和模拟器上调试 C、Objective-C 和 C++。
    LLDB 是作为一组可重用的组件构建的,这些组件高度利用了较大的 LLVM 项目中的现有库,例如 Clang 表达式解析器和 LLVM 反汇编器。
    标准的 LLDB 提供了一组广泛的命令,旨在与老版本的 GDB 命令兼容。 除了使用标准配置外,其可以安装 C++ 或者 Python 插件,可以很容易地自定义 LLDB 以满足实际需要。
    LLDB 是开源的,LLDB 的代码可以在LLVM中查看。

命令

命令结构

<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]

命令选项

LLDB 中的命令选项有规范形式(canonical,也称为“discoverable”)和缩写形式(abbreviated)

lldb 调试

Xcode 进入

通过命中断点或点击 Pause program execution进入 LLDB 调试模式。

Pause program execution

终端进入

在终端中输入 lldb 进入 LLDB 调试模式

help 命令

    在 LLDB 中执行 help 命令就会列出所有命令列表,对于 LLDB 中的所有命令都可以查看文档 help {command}

LLDB 部分命令表

命令 描述
apropos 模糊搜索命令
breakpoint 操作断点
command 自定义命令
disassemble 反汇编指定命令
expression 在当前线程上计算表达式。使用LLDB的默认格式显示任何返回值。
frame 选择和检查当前线程堆栈
language 切换语言 objc,swift,cplusplus
log 控制 LLDB 内部输出
memory 操作内存
plugin 管理 LLDB plugin
register 用于访问当前线程的寄存器
process 进程交互
session 管理 LLDB session
settings LLDB 设置
source 用于检查由当前目标进程的调试信息描述的源代码的命令
statistics 打印调试会话的统计信息
swift-healthcheck 显示LLDB调试器运行状况检查诊断
target 用于在调试器目标上操作的命令
thread 用于在当前进程中的一个或多个线程上操作的命令
trace 用于加载和使用处理器跟踪信息的命令
type 用于在系统类型上操作的命令
version LLDB 版本
watchpoint 观察点用于内存
trace 用于加载和使用处理器跟踪信息的命令
type 用于在系统类型上操作的命令

LLDB 部分命令缩写

缩写(abbreviations) 完整命令 描述
add-dysm target symbols add 通过指定调试符号文件的路径或使用选项指定模块,将调试符号文件添加到目标的当前模块之一
attach - 按ID或名称附加到进程。
b breakpoint set 设置符号断点
bt - 显示当前线程调用栈
c 、continue process continue 继续当前程序
call、p、print expression -- 在当前线程上计算表达式。使用LLDB的默认格式显示任何返回值。
di、dis disassemble 反汇编指定命令
display target stop-hook 在每次停止时计算表达式
down - 选择较新的堆栈,默认为1
up - 选择较旧的堆栈,默认为1
env - 查看和设置环境变量
exit、 q quit 退出 LLDB
f thread backtrace 从当前线程中按索引选择当前堆栈帧
finish thread step-out 完成当前堆栈的执行并在返回后停止
image target modules 用于访问一个或多个目标模块信息的命令。
kill process kill 终止当前程序
l、list - 列出相关源代码
n、next thread step-over 源码级别的单步执行,跨步调用
ni、nexti thread step-inst-over 指令级别的单步执行,跨步调用
po expression -O -- 输出 Object 描述
re register 用于访问当前线程的寄存器
s thread step-in 源码级别的单步执行,单步调用
si thread step-inst 指令级别的单步执行,单步调用
t thread select 切换线程
v、var frame variable 当前堆栈变量
vo frame variable -O 输出当前堆栈变量的描述
x memory read 读取内存

LLDB 流程控制

process continue

process continue 取消程序当前的暂停,使程序继续执行。 cprocess continue 的缩写形式

对应 Xcode 中的process continue

执行单步操作

thread step-out

thread step-out 完成当前堆栈的执行并在返回后停止。。finishthread step-out 的缩写形式

对应 Xcode 中的step out

thread return

thread return 可以使得当前函数立即返回,也就是说,后续代码都不会执行了。

上一篇下一篇

猜你喜欢

热点阅读