程序员

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
上一篇下一篇

猜你喜欢

热点阅读