LLDB指令一

LLDB指令格式:

[ [...]] [-options [option- value]] [argument [argument...]]

: 命令
[ [...]]:子命令
:命令操作
[-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 []:让函数直接返回某个值,不会执行断点后面的代码
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指令一)