美文网首页
LLDB指令一

LLDB指令一

作者: 曹来东 | 来源:发表于2018-08-13 09:33 被阅读9次

    LLDB指令格式:

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

    <command> : 命令
    [<subcommand> [<subcommand>...]]:子命令
    <action>:命令操作
    [-options [option- value]] : 命令选项
    [argument [argument...]]:命令参数
    LLDB指令格式中[](中括号)内的指令可以没有

    比如给test函数设置断点

    //breakpoint : 命令
    //set : 子命令(或者说是动作action)
    // -n : name,函数名
    // test : 参数
    breakpoint set -n test
    
    image.png

    help指令

    查看指令用法:
    help breakpoint
    help breakpoint set

    expression指令

    执行一个表达式
    expression:命令选项
    --:命令选项结束符,表示所有的命令选项已经设置完毕,如果没有命令选项,--可以省略
    :需要执行的表达式
    expression self.view.backgroundColor = [UIColor redColor]
    过掉23行的断点就可以看到lldb指令已经生效

    image.png
    p po print call这几个指令某种情况下是同义指令,没有区别.
    image.png
    注意区分如下指令:
    p arr
    p -O -- arr
    expression arr
    expression -O -- arrpo arr同义
    􏰲􏱸􏱹􏱤􏰎􏰧􏱦􏱧􏰛 image.png
    image.png

    如上所示expression -O -- arr指令想当于NSLog(@"%@")方式打印对象.即执行该对象的description方法.

    主要的两个指令:

    p:后面可以接表达式,方法调用等
    po:后面可以打印对象

    thread backtrace指令

    打印线程的堆栈信息和指令bt的效果相同
    thread return [<expr>]:让函数直接返回某个值,不会执行断点后面的代码
    frame variable[variable-name]:打印当前栈帧的变量
    thread continue |continue| c:程序继续运行
    thread step-over |next| n 单步运行,把子函数当做整体异步执行
    thread step-in step s:单步运行,遇到子函数会进入子函数
    thread step-out finish:直接执行完当前函数的所有代码,返回到上一个函数
    si nis n类似:
    s n是源码级别
    si ni是汇编指令级别

    相关文章

      网友评论

          本文标题:LLDB指令一

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