lldb简单使用

1、工具调试键
JH{ZSKIZ[0HBKYA07Q`}F]L.jpg

从左到右:(有点装了)

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>

0RV}IDAQ5X98XYMXSP(FZFS.jpg
4设置别名

如果觉得命令行太麻烦可以自定义简单的名称,例如:
<pre>
(lldb) command alias bfl breakpoint set -f %1 -l %2
(lldb) bfl foo.c 12
出去已创建的别名命令
(lldb) command unaries bel
</pre>

5设置断点触发条件

当condition的条件满足的时候才会执行着一个断点

T)987YZ)T%90%REEIJPK5WM.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    CoderSC阅读 1,426评论 0 2
  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 3,378评论 0 10
  • 之前使用Xcode调试的时候,只知道使用断点,以及调试器中continue和step over的使用,定位错误的时...
    月咏蝴蝶阅读 902评论 0 2
  • 与调试器共舞 - LLDB 的华尔兹 nangege 2014/12/19 你是否曾经苦恼于理解你的代码,而去尝试...
    McDan阅读 895评论 0 0
  • 你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? NSLog(@"%@", whatIsInsideThi...
    木易林1阅读 987评论 0 4