iOS 常用 LLDB 指令

作者: Charlin丶 | 来源:发表于2020-03-05 18:54 被阅读0次

    一、指令的格式

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

    • <command> 命令
    • [<subcommand> [<subcommand>...]] 子命令
    • <action> 命令操作
    • [-options [option- value]] 命令选项
    • [argument [argument...]] 命令参数

    比如给 test 函数设置断点
    breakpoint set -n test

    二、指令

    1. help (查看指令的用法)

    比如 help breakpoint、help breakpoint set

    2. expression -- (执行一个表达式)

    • --: 命令选项结束符,表示所有的命令选项已经设置完毕,如果没有命令选项,--可以省略

    比如 expression self.view.backgroundColor = [UIColor redColor]

    • expression、expression -- 和指令 print、p、call 的效果一样
    • expression -O -- 和指令 po 的效果一样

    3. thread backtrace (打印线程的堆栈信息)

    • thread backtrace 和指令 bt 的效果一样

    4. thread return [] (让函数直接返回某个值,不会执行断点后面的代码)

    比如 thread return [self test]

    5. frame variable (打印当前栈帧的变量)

    比如 frame variable self->_age

    6. thread continue、continue、c (程序继续运行)

    7. thread step-out、finish (直接执行完当前函数的所有代码,返回到上一个函数)

    8. thread step-over、next、n (单步运行,把子函数当做整体一步执行)

    9. thread step-in、step、s (单步运行,遇到子函数会进入子函数)

    10. thread step-inst-over、nexti、ni (单步运行,把子函数当做整体一步执行)

    11. thread step-inst、stepi、si (单步运行,遇到子函数会进入子函数)

    si、nis、n 类似
    s、n 是源码级别
    si、ni 是汇编指令级别

    12. breakpoint set (设置断点)

    • breakpoint set -a 函数地址
    • breakpoint set -n 函数名
    • breakpoint set -r 正则表达式
    • breakpoint set -s 动态库 -n 函数名

    13. breakpoint list (列出所有的断点,每个断点都有自己的编号)

    14. breakpoint disable 断点编号 (禁用断点)

    15. breakpoint enable 断点编号 (启用断点)

    16. breakpoint delete 断点编号 (删除断点)

    17. breakpoint command add 断点编号

    • 给断点预先设置需要执行的命令,到触发断点时,就会按顺序执行

    18. breakpoint command list 断点编号

    • 查看某个断点设置的命令

    19. breakpoint command delete 断点编号

    • 删除某个断点设置的命令

    20. 内存断点, 在内存数据发生改变的时候触发(与代码断点差不多)

    • watchpoint set variable 变量

    比如 watchpoint set variable self->age

    • watchpoint set variable 地址

    比如 watchpoint set expression &(self->_age)

    • watchpoint list
    • watchpoint disable 断点编号
    • watchpoint enable 断点编号
    • watchpoint delete 断点编号
    • watchpoint command add 断点编号
    • watchpoint command list 断点编号
    • watchpoint command delete 断点编号

    21. image lookup

    • image lookup -t 类型 : 查找某个类型的信息
    • image lookup -a 地址 : 根据内存地址查找在模块中的位置
    • image lookup -n 符号或者函数名 : 查找某个符号或者函数的位置

    22. image list (列出所加载的模块信息)

    • image list -o -f : 打印出模块的偏移地址、全路径

    小技巧

    • 敲 Enter, 会自动执行上次的命令
    • 绝大部分指令都可以使用缩写

    比如 breakpoint list 可以缩写成 br l

    相关文章

      网友评论

        本文标题:iOS 常用 LLDB 指令

        本文链接:https://www.haomeiwen.com/subject/ibxcrhtx.html