美文网首页程序员
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详解

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