iOS-LLDB调试-整理

作者: MonsterNanny | 来源:发表于2016-04-27 10:48 被阅读209次
简单图解

在 LLDB 命令行中,对于每个流程控制按钮都有相应的命令。

  • n 命令, 代表 Step Over 操作。
  • s 命令, 代表 Step Into 操作。
  • finish命令,代表 Step Out 操作。
  • c命令, 代表恢复程序执行操作。

Po 打印变量

 Po 变量

expression 修改变量

e 变量 = 0

thread return 线程返回

不但可以使当前的函数返回,而且还可以任意修改当前函数的返回值,而不管传进来的参数如何。

  • 比如我们有这样一个函数:
func add(a:Int, b:Int) -> Int {
    return a + b;
}

如果断点进入这个函数体的时候,我们执行了 thread return 3 命令,那么不管这时候传进来的两个参数是什么,这个函数都会退出执行,并返回我们指定的值 3。

打印UI所有层级属性

po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]

每个视图的标识中,都有一个 16进制的字符串,代表这个视图的 ID,比如这个:

UIView: 0x7ffcd2c6dc10

这个 ID 的作用非常的强大,得到了这个 ID, 我们就可以通过这个命令来得到这个视图的引用了:

(lldb) e id $view = (id) 0x7fbd71432590

简单解释下,通过 expression 命令(这里用缩写形式 e),我们用 View 的 ID 值取得了这个 View 引用,并将它保存到 $view 变量中。

我们得到了引用之后,就可以对这个视图进行很多的操作了,比如我们可以在运行时改变这个视图的背景色:

(lldb) e (void) [$view setBackgroundColor:[UIColor redColor]]

当然,我们运行完这条命令,界面上不会马上反应出来,我们还需要调用这个命令刷新一下:

(lldb) e (void)[CATransaction flush]

关于 Chisel

最后,再给大家延展一下。LLDB 本身的命令系统非常健壮,并且它还支持 Python 的脚本扩展,这样它又有了很不错的扩展性,我们可以根据自己的需要来扩展自己的脚本。

Chisel 正是 LLDB 扩展的一个典型例子,这是由 Facebook 团队开发的一个开源的 LLDB 的 Python 扩展集合,它再 LLDB 命令的基础上,又为我们提供了更加方便的操作接口。

  • 比如我们要打印当前的视图层级,如果用 LLDB 原生的命令,我们需要这样:
(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
  • 而 Chisel 为我们提供了更简洁的接口:
(lldb) pviews

  • 同样的,这条用于刷新显示的命令:
(lldb) e (void)[CATransaction flush]
  • Chisel 也为我们提供了简便的接口:
(lldb) caflush

关于 Chisel 的更多内容,大家可以参看它的主页:https://github.com/facebook/chisel

LLDB 自身完善的命令行系统,以及它的扩展能力,都成为提升我们开发效率的利器。正确的使用好调试工具,一定会帮助我们快速的解决更多的问题。

想探索更加多LLDB命令行, 可通过help命令来发现更加多的新大陆~

相关文章

  • iOS-LLDB调试-整理

    在 LLDB 命令行中,对于每个流程控制按钮都有相应的命令。 n 命令, 代表 Step Over 操作...

  • FFmpeg源码调试:解析H.264 SPS(Sequence

    版本历史: 7月30日:整理文档。 7月29日:整理代码。 FFmpeg源码调试系列文档: FFmpeg源码调试:...

  • Android Studio常用快捷键,使开发很便捷

    Android Studio常用快捷键整理 一、运行与调试:①运行:shift + F10②调试:shift + ...

  • 【iOS-LLDB常用指令】

    print p po memory x/ `` `` `` `` `` `` `` `` `` ``

  • 在 Xcode 中调试和研究 Caffe

    先记录,后面再整理; 在 Xcode 中调试和研究 Caffe 在 Xcode 中调试和研究 CaffeDebug...

  • iOS - 各类证书篇

    闲来无事,将各类证书创建方案整理记录,以备后用! 第一、调试证书 (鉴于iOS7以后,真机调试免费调试测试,故不...

  • 2019-07-15

    花了一周多时间最详细的整理了PHPSTORM+XDEBUG的调试教程,实现了php程序的远程调试、单步调试、跟踪等...

  • Android ADB 命令详解

    作者为了方便自己使用,特整理一下官方的adb Android 调试桥 (adb) Android 调试桥 (adb...

  • Objective-C与JavaScript 相关文章

    *** 版权声明: 以下文章都是从互联网上收集并整理而成的。 *** 前端调试工具 Safari 前端开发调试 i...

  • IOS 问题调试与处理

    之前收集了一些Xcode控制台的一些调试方法,现在结合代码调试和问题查找统一整理一下。 首先,说到调试,分为开发过...

网友评论

    本文标题:iOS-LLDB调试-整理

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