1、工具调试键
从左到右:(有点装了)
1、Hide the Debug area 收起窗口
2、Deactivate breakpOINTS所有的断点全部起作用/不起作用
3、Continue paogram execution Step over 调过该断点 程序恢复正常继续执行
4、 Step over 单步执行的意思,每点这个按钮一次,程序就会从我们断点开始的地方,向下执行一步
5、Step into 进入执行的意思,断点会继续进入这个函数的内部进行调试
6、step out跳出的意思, 它会跳出当前的函数,回到函数的调用处
3、4、5、6、对应的lldb指令:
<pre>
(lldb) thread continue
(lldb) thread step-over
(lldb) thread step-in
(lldb) thread step-out
</pre>
2、设置断点(列几个例子)
main.m 文件的第12航设置断点
(lldb) breakpoint set --file main.m --line 12
(lldb) breakpoint set -f main.m -l 12
在函数名为foo处设置断点:
(lldb) breakpoint set --name foo
(lldb) breakpoint set -n foo
(lldb) breakpoint set --name foo --name bar
给选择器名为alignLeftEdges:的设置断点
(lldb) breakpoint set --selector alignLeftEdges:
(lldb) breakpoint set -S alignLeftEdges:
也可以写成:
(lldb) breakpoint set -n "-[SKTGraphicView alignLeftEdges:]"
(lldb) br s -n "-[SKTGraphicView alignLeftEdges:]"
将断点限定在一个特定的可执行库中
(lldb) breakpoint set --shlib foo.dylib --n foo
3打印
<li> print (缩写p)是expression - - 的简写 所以当想要输出某一个值得时候 可以 p var 可以 print var 还可以 expression - - var
<pre>
lldb) p number
(NSInteger) $0 = 1
可以给 print 指定不同的打印格式 print/<fmt>
(lldb) p/x number
(NSInteger) $1 = 0x0000000000000001
16进制 p/x ,二进制(t=two) p/t , 打印字符 p/c , 打印以\0终止的字符串 p/s 。
</pre>
</li>
<li>expression(简写 e)可改变程序中的值 (lldb) e string = @“xxx” 此时string的值已经被改变再次输出就是string=xxx
(lldb) e ((UIButton *)sender).backgroundColor = [UIColor redColor]
(UICachedDeviceRGBColor *) $41 = 0x00007fdd10715b00
所有格式 https://sourceware.org/gdb/onlinedocs/gdb/Output-Formats.html
</li>
<li>po 打印对象
(lldb) po string
可以看到到对象的 description 方法的结果。和命令 (lldb) e -O -- string一个效果,e -o -- 的别名就是 po (print object 的缩写)。
<pre>
(lldb) po [blogName uppercaseString]
(lldb) po [blogName substringFromIndex:2]
视图层次结构
po [self.view recursiveDescription]</pre>
4设置别名
如果觉得命令行太麻烦可以自定义简单的名称,例如:
<pre>
(lldb) command alias bfl breakpoint set -f %1 -l %2
(lldb) bfl foo.c 12
出去已创建的别名命令
(lldb) command unaries bel
</pre>
5设置断点触发条件
当condition的条件满足的时候才会执行着一个断点