美文网首页程序员
iOS-OC LLDB详解

iOS-OC LLDB详解

作者: 洧中苇_4187 | 来源:发表于2020-04-27 17:11 被阅读0次

如果你想重新运行程序 除了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

相关文章

  • iOS-OC LLDB详解

    如果你想重新运行程序 除了command + R 还可以这样,以下三种方式都可以 断点下一步,这个 "下一步" 会...

  • 送你一份lldb详解!!

    前言 学如逆水行舟,不进则退。共勉!!! 闲来无事,一篇lldb详解送给大家了。 lldb详解 lldb命令 t:...

  • LLDB详解

    Xcode po 是什么你以前调试是不是这样打印的? 或者临时写一个临时变量? 或者专门写个检查器来判断? 或者专...

  • LLDB详解

    常用调试 你常用的调试是不是这样? 或者写一个临时变量? 或者专门写个检查器来判断? 或者专门写一个方法? 是不是...

  • LLDB指令全集

    详细介绍请点击:LLDB使用总结 指令详解po _lldbArr打印参数值p _lldbArr打印指针p $1 =...

  • iOS-OC block详解

    block的本质的就是一段代码块,也是一个OC对象,它在合适的时间进行调用,它最终继承自NSObject,验证如下...

  • IOS-runtime

    标签(空格分隔): IOS-OC [toc] 相关阅读http://yulingtianxia.com/blog/...

  • LLDB-iOS高效开发必备利器详解

    LLDB 一、什么是lldb lldb官网文档地址:https://lldb.llvm.org/[https://...

  • 动态调试高级用法

    LLDB - lldb_commands 下载地址LLDB 安装将下载文件解压,并将lldb_commands目录...

  • iOS LLDB调试

    掌握以下lldb命令,够用. ### LLDB调试总结 eNSString*$str=@"test"...

网友评论

    本文标题:iOS-OC LLDB详解

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