中装建设官方网站,哪家做企业网站,蜡笔小新网页制作模板,网站建设工作LLDB
LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具.标准的lldb提供了一组广泛的命令,旨在与老版本的GDB命令兼容.除了使用标准配置外,还可以很容易地自定义lldb以满足实际需要.
1.1 lldb语法:
command [subcommand [subcommand...]] command [subcommand [subcommand...]] action [-options [option-value]] [argument [argument]...]
command (命令)和 subcommand(子命令): lldb调试命令的名称action: 执行命令的操作options: 命令选项argument: 命令的参数[]: 表示命令是可选的,可以有也可以没有
1.2 示例:
breakpoint set -n test
command: breakpoint 表示断点命令action: set表示设置断点option: -n表示根据方法name设置断点argument: test表示方法名为test
1.3 断点设置
在日常开发中,我们可以使用Xcode做断点设置、但是在逆向环境中,我们并没有第三方应用的源码,也不可能通过界面设置断点.这种情况下,只能使用breakpoint指令,在Xcode中lldb控制台,或直接在终端进行断点设置.breakpoint set -n xxx: 对方法/函数名称设置断点breakpoint set -r xxx: 对包含字符串的符号设置断点breakpoint set --selector xxx: 对项目内指定名称的selector设置断点breakpoint set --file xxx: 在指定文件中设置断点breakpoint list: 查看断点列表breakpoint disable: 禁用断点breakpoint enable: 启用断点breakpoint delete: 删除断点缩写: break、br、设置断点可缩写指令: b
1.4 代码执行
po指令: 意思是 print object, 用于打印对象,本质上调用了对象的 descriptionexpression 指令: 用于执行代码 缩写: exp、p可以使用标号可执行多行代码流程控制 c(continue)指令: 继续执行n(next)指令: 单步运行,将子函数当作整体一步执行ni指令: 单步运行,汇编级别s指令: 单步运行,遇到子函数会进去si指令: 单步运行可跳转指令内部,汇编级别finish指令: 直接走完当前方法,返回到上层frame查看堆栈信息 bt指令: 查看函数调用栈up指令: 查看上一个函数down指令: 查看下一个函数frame select指令: 选择指令函数frame variable指令: 查看方法调用者、方法名称、参数和局部变量thread return指令: 让方法直接返回,不执行里面的代码内存断点 watchpoint指令,设备内存断点其他指令 br command add指令: 给断点添加命令的命令target stop-hook add -o “xxx”: 每次stop的时候去执行一些命令,针对breakpoint、watchpoint配置lldb初始化文件,当lldb启动,就会加载此文件,执行文件内的指令,一劳永逸.lldb更多参考文档 https://lldb.llvm.org/python_reference/index.htmlhttps://lldb.llvm.org/