写在前面
日常开发中经常会用到LLDB调试
,可能用的最多的命令就是po
,而在逆向领域中根本不可能让你在代码中下断点调试,于是乎LLDB
就成了非常重要的手段
一、LLDB
LLDB
(Low Lever Debug)的缩写,是默认内置于XCode的动态调试工具,它与LLVM编译器一起,存在于主窗口底部的控制台中,能够带给我们更丰富的流程控制和数据检测的调试功能
标准的LLDB提供了一组广泛的命令,旨在与老版本的GDB命令兼容。除了使用标准配置外,还可以很容易的自定义LLDB以满足实际需要
二、LLDB命令
1. LLDB语法
<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument[argument...]]
<command>
(命令)和<subcommand>
(子命令):LLDB调试命令的名称<action>
:执行命令的操作<options>
:命令选项<arguement>
:命令的参数[]
:表示命令是可选的,可以有也可以没有
比如breakpoint set -n test
command
:breakpoint表示断点命令action
:set表示设置断点option
:-n表示根据方法name设置断点arguement
:test表示方法名为test
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:834688868,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
如果你正在面试,或者正准备跳槽不妨动动小手,添加一下咱们的交流群:834688868来获取一份详细的大厂面试资料 为你的跳槽加薪多一份保障
2. LLDB初级使用
LLDB命令都是在进入LLDB状态(运行状态下点击“暂停符号”)才能使用生效的 [图片上传失败…(image-6ff20f-1634645644917)]
- 查看断点列表
where
是断点所在处address
是断点地址option disable
断点被禁用
(lldb) breakpoint list
- 设置单个断点
// 设置c函数的断点
(lldb) breakpoint set -n cMethod
// 设置oc函数的断点
(lldb) breakpoint set -n "[ViewController ocMethod1]"
复制代码
- 设置一组断点
(lldb) breakpoint set -n "[ViewController ocMethod1]" -n "[ViewController ocMethod2]" -n "[ViewController ocMethod3]"
- 禁用/启用某一组断点
// 禁用
(lldb) breakpoint disable 1
// 启用
(lldb) breakpoint enable 1
- 禁用/启用某一个断点
// 禁用
(lldb) breakpoint disable 1.1
// 启用
(lldb) breakpoint enable 1.1