美文网首页
LLDB的一些使用技巧

LLDB的一些使用技巧

作者: _未可知 | 来源:发表于2019-11-12 11:28 被阅读0次

在这次的学习lldb之前,一直在用一些lldb的命令而不自知,比如po命令,这个命令的作用是打印变量的信息(调用变量的description方法),这个方法给调试带来了很大的便利,如果没有这个命令,就只能频繁的写NSLog方法,而且还要重新编译运行,而使用po命令就不用编译运行了。
我在这里只介绍一些我常用的一些命令,一些其他的使用技巧可以参考下面的引用。

expression

这个命令的作用是在当前线程执行表达式,并展示返回值,前面说到的po命令其实就是这个命令的别名版本,它的原始写法是expression -O --

lldb1.png

如果你嫌拼写太长也可以这样写e -O --

lldb2.png

不过使用这种方式需要注意下不要和别的命令重名,比如 p 是打印变量信息,它的全称是print,但是你不可以使用pr,因为process也有pr前缀
这里还有一个非常好的用法,可以在运行时动态的改变界面,方便你的调试,

lldb3.png lldb4.png lldb5.png

平时调试界面的时候,如果要改变界面的元素的样式,每次都要编译,重新运行,有了这个功能可以大大缩短调试的时间,太棒了。

breakpoint

断点应该是我们最常用到的功能,breakpoint命令可以方便的设置断点

breakpoint set --name someMethod // 在方法名为someMethod的地方设置一个断点,这个断点是全局的,且不管是你调用的还是系统调用的都会停留在这个断点这里

还可以根据行数设置断点

br s --file test.m --line 12 // --file是文件名选项 --line 是行选项

列出全部断点

br list //展示所有的断点

删除断点

br delete 1 // 删除断点,delete 后面的加的数字是断点的id,在上面的br list可以看到所有断点的id

还可以设置条件断点

br s --file test.m --name someMethod: --condition 'flag == YES' // --condition 条件断点的选项 flag是someMethod参数的名称

watchpoint

这个命令的作用可以观察实例变量的变化,当你想监听某个变量的时候,你可以这样写

watchpoint set variable btn // btn就是你需要监听的实例变量

Thread Return

这个函数可以用来控制程序流程,比如你在调试类似以下函数的时候

- (void)someMethod:(BOOL)flag {
    if (flag) {
        return YES;
    }
    return NO;
}

你在某处调用了[self someMethod:YES],但是当你在调试时你又想查看flag参数为NO的情况,如果在没有lldb的情况下,你不得不更改参数值为NO,然后再重新编译运行。但是有lldb,你可以这样做,在if (flag) { 这行代码处设置一个断点,当程序执行到这里的时候,在控制台中输入以下命令

thread return NO

即可返回NO,并立即返回到[self someMethod:YES]处,是不是很酷😎

chisel

chisel其实就是一个Python脚本的集合,它封装了很多好用的命令,比如caflush它就是封装了e [CATransaction flush],还有很多其他的命令。在初次安装使用chisel时,有一点需要注意一下,在高版本的macos系统中,加载过程中会出现问题(我的系统版本为10.15),这时仅需在命令行工具中输入以下命令即可解决

defaults write com.apple.dt.lldb DefaultPythonVersion 2

总结

这里只是简单介绍了lldb的用法,在实际的使用过程中掌握以上的命令即可为开发调试节省很多时间,当然,还有很多的其他命令可以使用,比如frame、thread、process等等,这些就需要你去自己探索了。

与调试器共舞-LLDB的华尔兹
LLDB
LLDB Quick Start Guide
Chisel

相关文章

  • lldb po 失效

    LLDB使用以及技巧

  • LLDB的一些使用技巧

    在这次的学习lldb之前,一直在用一些lldb的命令而不自知,比如po命令,这个命令的作用是打印变量的信息(调用变...

  • iOS开发调试概览

    概述 我们都知道Xcode默认的调试器是LLDB(在此之前使用的是 GDB ),但是关于LLDB的debug技巧并...

  • LLDB高级调试+Cycript

    对了 LLDB 有了一些认识之后,也能够更好的使用 LLDB 了,但是对于常用的一些指令使用起来还是过于麻烦,为...

  • iOS开发之LLDB常用调试技巧

    原文地址iOS开发之LLDB常用调试技巧用好了LLDB,让调试变得轻松愉快,本文会写出并示例讲解一些常用的指令,以...

  • xcode调试技巧

    Xcode调试技巧之:LLDB Xcode调试技巧之:LLDB 1.输出视图层级关系(这是一个被隐藏的命令):po...

  • Xcode中LLDB使用CheatSheet

    使用LLDB可以减少使用NSLog大大提高调试的效率,尤其是使用下面提及的断点设置选项、界面调试技巧的时候。 基础...

  • iOS -LLDB简单命令

    LLDB语法 在使用LLDB之前,我们来先看看LLDB的语法,了解语法可以帮助我们清晰的使用LLDB: 一眼看上去...

  • iOS_调试技巧详解

    上次介绍了一下LLDB的使用, 但实际上在解决一些问题的时候, 并不是直接使用LLDB调试指令的, 会通过各种工具...

  • LLDB 使用

    LLDB 使用 LLDB(Low Lever Debug)命令结构 其中: (命令)和 (子命令):LLDB调试命...

网友评论

      本文标题:LLDB的一些使用技巧

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