iOS-OC LLDB详解
2020-04-27 本文已影响0人
洧中苇_4187
如果你想重新运行程序 除了command + R 还可以这样,以下三种方式都可以
1. process launch
2. run
3. r
断点下一步,这个 "下一步" 会跳进方法里面,也就是说,当A方法调用B方法,断点会跟进B方法里面
1. thread step-in
2. step
3. s
这个 "下一步" 不会跳到方法里面
1. thread step-over
2. next
3. n
在当前选定的线程中执行指令级单步(一句句汇编代码执行)。
1. thread step-inst
2. si
在当前选定的线程中执行指令级单步执行(一句句汇编代码执行,但不会跳进去)。
1. thread step-inst-over
2. ni
跳出当前选定的栈帧(直接跳到函数调用的地方)。
1. thread step-out
2. finish
设置断点
1. breakpoint set --name main
2. br s -n main
3. b main
给某个文件设置断点
1. breakpoint set --file test.c --line 12
2. br s -f test.c -l 12
3. b test.c:12
给某个方法设置断点
1. breakpoint set --method main
2. br s -M main
给系统函数设置断点
1. breakpoint set --name "-[NSString stringWithFormat:]"
2. b -[NSString stringWithFormat:]
给 2 号断点添加一些操作
breakpoint command add 2
给所有带run方法的类设置断点
1. breakpoint set --selector run
2. br s -S run
通过正则表达式设置断点
1. breakpoint set --func-regex regular-expression
2. br s -r regular-expression
给某个动态库下断点
breakpoint set -s 动态库 -n 函数名
给名字带"abc"字符的方法打断点
1. breakpoint set -r abc
通过类名,和行数设置断点 -f (file),L(line)
1. br s -f foo.c -l 12
设置条件断点
1. breakpoint set --name foo --condition '(int)strcmp(y,"hello") == 0'
2. br s -n foo -c '(int)strcmp(y,"hello") == 0'
列出所有断点
1. breakpoint list
2. br l
删除某个断点
1. breakpoint delete 1
2. br del 1
删除所有断点 f(force 不管参数,强制删除)
1. br del -f
使某个断点失效
1. breakpoint disable 1
2. br dis 1
使某个断点重新生效
1.breakpoint enable 1
2. br en 1
给某个变量 int tmp 设置监视断点,,它会在这个值改变的时候打印在控制台,并卡在执行那句代码(说明,你通过po tmpVar = 12,并不会触发监视断点,只有通过执行的代码才会卡在那里 )
1. watchpoint set variable tmp
2. wa s v tmp
给某些值这只监视断点,当它改变时做打印(int tmpVar 当tmpVar==5,断点断住),测试对象类型,不太好用
watch set var tmpVar
watchpoint modify -c '(tmpVar ==5)'
打印当前模块的所有变量
1. frame variable
2. fr v
打印当前文件的全局/静态变量
1. target variable
2. ta v
每当断点停住的时候打印 int c ,MJPerson *person
1. target stop-hook add --one-liner "frame variable c person"
2. ta st a -o "fr v c person"
只在main函数下打印 c,person 这两个值
1. target stop-hook add --name main --one-liner "frame variable c person"
2. ta st a -n main -o "fr v c person"
调用崩溃的函数,并在函数崩溃时停止。
1. expr -u 0 -- function_which_crashes()
打印表达式结果的动态类型。
1. expr -o -- [SomeClass returnAnObject]
or using the po alias:
2. po [SomeClass returnAnObject]
获取某个正在运行的程序(myProj)的偏移地址(ASLR),并打印其路径
image list -o -f myProj