LLDB基础知识

  • LLDB的语法
<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]

//<command>(命令)和<subcommand>(子命令):LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。
//<action>:执行命令的操作
//<options>:命令选项
//<arguement>:命令的参数
//[]:表示命令是可选的,可以有也可以没有
  • 当我们想打印一个对象的时候。需要使用-O命令选项
(lldb) expression -O -- self
<ViewController: 0x7f9000f17660>
  • expression(expression命令的作用是执行一个表达式,并将表达式返回的结果输出)

    • 执行某个表达式
    expression <cmd-options> -- <expr>
    <cmd-options>:命令选项,一般情况下使用默认的即可,不需要特别标明。
    --: 命令选项结束符,表示所有的命令选项已经设置完毕,如果没有命令选项,--可以省略
    <expr>: 要执行的表达式
    // 改变颜色
    (lldb) expression -- self.view.backgroundColor = [UIColor redColor]
    // 刷新界面
    (lldb) expression -- (void)[CATransaction flush]
    • 将返回值输出
      (lldb) expression -- self.view
      (UIView *) $1 = 0x00007fe322c18a10
  • p & print & call

    • 这三个命令其实都是expression –的别名(–表示不再接受命令选项,详情见前面原始(raw)命令这一节)
      (lldb) expression -- self.view
      (UIView *) $5 = 0x00007fb2a40344a0
      (lldb) p self.view
      (UIView *) $6 = 0x00007fb2a40344a0
      (lldb) print self.view
      (UIView *) $7 = 0x00007fb2a40344a0
      (lldb) call self.view
      (UIView *) $8 = 0x00007fb2a40344a0
      (lldb) e self.view
      (UIView *) $9 = 0x00007fb2a40344a0
  • po(LLDB为expression -O –定义了一个别名:po)

    • 如果想了解,在LLDB控制台上输入:help expression即可查到expression所有的信息
  • thread backtrace & bt

    • 有时候我们想要了解线程堆栈信息,可以使用thread backtrace thread backtrace作用是将线程的堆栈打印出来。
    • 当发生crash的时候,我们可以使用thread backtrace查看堆栈调用
    • LLDB还为backtrace专门定义了一个别名:bt
  • thread return

    • Debug的时候,也许会因为各种原因,我们不想让代码执行某个方法,或者要直接返回一个想要的值。这时候就该thread return上场了。
      thread return [<expr>]
      //thread return可以接受一个表达式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值