美文网首页
iOS-效率提升-lldb

iOS-效率提升-lldb

作者: 笑破天 | 来源:发表于2021-08-19 21:20 被阅读0次

1、在 LLDB 中修改 App 状态

在 LLDB 中通过expression命令可以改变程序当前的各种状态,e、expr 作为简写也可以实现同样的功能。我们用一个简单的UILabel来举例,为myLabel设置一个值 hello , 正常来讲视图上的myLabel就应该显示 hello 。

func test() -> Void {
    myLabel.text = "hello"
// 断点 -> 
}

你可以在myLabel.text = "hello"这句代码后设置一个断点,运行程序执行断点后,在控制台的 LLDB 调试器 中输入下面的表达式改变它的值,在继续运行程序之后,相信你在界面上看到的值一定是 hello world 。也可以改变颜色,执行方法,调整控件frame等。

// 改变 myLabel 文案
e myLabel.text = "hello world"
// 改变 myLabel 文字颜色
e myLabel.textColor = UIColor.red
// 执行 test 方法
e test()
// 调整控件frame和约束
e myLabel.frame = CGRect(x: 100, y: 200, width: 100, height: 100)
e myLabel.y = 20
e self.topConstraint.updateOffset(20)

2、利用断点实时插入代码

编辑断点-action选择debugger command,可以输入你想注入的lldb命令,最后选择自动继续执行后续代码,而不会停在这一行。即可实现注入lldb代码。

3、监听属性变化

1、符号断点
在 Symbol 一栏输入任何你想监听的函数比如[UILabel setText:],之后所有页面下的所有UILabel类型对象在设置text属性的时候都会执行该断点。在这个断点的控制台中,并没有显示变量属性等信息,我们怎么能知道设置了什么呢?接下来我们可以用$arg1$arg2等命令来打印出我们想要的信息。在这里$arg1是指对象本身,$arg2是对象被调用的函数,po命令无法直接输出函数名,需要加上(SEL),$arg3是被赋给text的值。
2、watch
在控制台找到要监听的属性,右键-watch即可。重新编译需要重新设置。

4、查看约束调用栈

Edit Scheme... -> Run -> Diagnostics -> Memory Management -> 勾选 Malloc Stack 并且切换至 All Allocation and Free History。重新打开Debug View Hierarchy,启动 Show Constraints。在右侧的show object inspector即可查看Backtrace

5、修改约束

通过po self.view.constraints或者Debug View Hierarchy中选中约束,即可拿到约束的地址,然后通过unsafeBitCast方法把地址转化为约束对象,即可实现在lldb里面设置约束

e unsafeBitCast(0x2803db480, to: NSLayoutConstraint.self).constant = 20

参考
WWDC 2018:效率提升爆表的 Xcode 和 LLDB 调试技巧
WWDC18 -Advanced Debugging with Xcode and LLDB

相关文章

  • iOS-效率提升-lldb

    1、在 LLDB 中修改 App 状态 在 LLDB 中通过expression命令可以改变程序当前的各种状态,e...

  • lldb博客学习

    久违的的LLDB篇一,让lldb提升你的效率http://www.jianshu.com/p/f888db82fc...

  • 工具篇-LLDB 调试器

    LLDB (Low Level Debugger) 轻量级高性能调试器,掌握 LLDB 可以有效的提升 Debug...

  • 【iOS开发】让lldb提升你的效率

    开发这么长时间,现在才知道原来有lldb这个东西,感觉真是找到救星了,以后再也不用再一个一个添加NSLog,然后再...

  • 五招教你如何效率提升

    效率提升的包含五个方面:个人效率提升、组织效率提升、资产效率提升、战略效率提升、创新效率提升。 一、个人效率的提升...

  • 久违的的LLDB篇一,让lldb提升你的效率

    本来一直想给大家普及一下lldb的使用,因为身边有很多朋友虽然开发了很久,但是还是不会使用调试器,还傻傻的打一个l...

  • iOS-常用LLDB指令

    LLDB是Xcode自带的调试器,可以通过一些命令获得想要的信息 常用打印 读取内存 修改内存中的值 格式 字节大小

  • [iOS-基础-BBC]LLDB调试

    0. 为什么写LLDB的文章 我看的有的同事在开发的时候:临时想看一个变量的值,就在对应代码行写上一个Log >>...

  • iOS-逆向17-LLDB

    《iOS底层原理文章汇总》[https://www.jianshu.com/p/15af435341ce]上一篇文...

  • 让LLDB效率倍增–Chisel

    Chisel Chisel是Facebook写的LLDB的指令集合,是个Python脚本库,功能十分强大。 安装 ...

网友评论

      本文标题:iOS-效率提升-lldb

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