美文网首页iOS开发技能集锦ios
Xcode LLDB Debug 教程(一)

Xcode LLDB Debug 教程(一)

作者: 秀才不才 | 来源:发表于2015-11-23 11:19 被阅读1593次

初识LLDB

如果你在平时的开发中从未使用过调试器,那你恐怕不知道一个调试器的作用有多大。你可能只满足于通过printf或者NSLog输出信息用于调试。但你只要试着尝试在调试中开始使用调试器LLDB,你会马上感受到调试器给你带来的便利。
LLDB是LLVM下的调试器。Xcode从4.0开始编译器开始改用LLVM,相应的调试器也从gdb改为LLDB。而从 Xcode5.0开始所有工程也被自动设置为使用LLDB。下面本文从初学者的角度讲解在日常的开发中如何使用LLDB以及LLDB常用的命令。
你可能从未使用过LLDB,那让我们先来热热身。 在调试器中最常用到的命令是p(用于输出基本类型)或者po(用于输出 Objective-C 对象)。如下,你可以通过输入po 和 view 来输出 view 的信息:


什么?在什么地方可以输入这个命令?Yeah,前提,我们需要先设置一个断点。
比如:你可能需要的是 view 下 subview 的数量。由于 subview 的数量是一个 int 类型的值,所以我们使用命令p

是不是很简单?
细心的朋友可能会发现输出的信息中带有$1、$2的字样。实际上,我们每次查询的结果会保存在一些持续变量中($[0-9]+),这样你可以在后面的查询中直接使用这些值。比如现在我接下来要重新取回$1的值:

po 和 p 的区别 应该是一个可以输出对象 一个只能输出c类型数据,有错拍砖

常用命令

  • expr (expression)
    可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。运行至断点时 输入expr i = 8

  • bt
    显示当前线程的堆栈 . bt all显示线程所有堆栈

  • image
    image 命令可用于寻址,有多个组合命令。比较实用的用法是用于寻找栈地址对应的代码位置。 下面我写了一段代码


    这段代码有明显的错误,程序运行这段代码后会抛出下面的异常。现在,我们怀疑出错的地址是:0x000000010d3e9864

    可以看到出错的位置是RootViewController.m的第23行(其实0x000000010dd5bb4 也能看出问题),但有时候这会更直观。

不错吧 很有吸引力吧 。◕‿◕。

抛砖引玉:更多命令可以参考 这个网站
另外,facebook开源了他们扩展的LLDB命令库,有兴趣的朋友也可以安装看看。

  • 简称和别名
    这些都可以参考这个网站

  • 常见问题
    上面我们简单的学习了如何使用LLDB命令。但有时我们在使用这些LLDB命令的时候,依然可能会遇到一些问题。
    比如下面这个命令


  • 找不到方法
    常见于输出frame的时候。比如你可能会得到以下的错误信息:


    这似乎是lldb的一个bug,无法通过点属性访问的方法打印framework里面的对象

总结

通过上面一些简单的讲解,相信朋友们已经知道如何使用LLDB命令来提高自己的效率了。Enjoy it!

转载自:这里

相关文章

  • Xcode LLDB Debug教程

    开胃小菜--简单的断点调试 在xcode中打开一个app,在想要break的行号上单击,即可生成一个深色的箭头标识...

  • Xcode LLDB Debug 教程(一)

    初识LLDB 如果你在平时的开发中从未使用过调试器,那你恐怕不知道一个调试器的作用有多大。你可能只满足于通过pri...

  • Xcode LLDB Debug 教程(三)

    让非 id 类型支持 po 因为在Xcode断点调试的时候, 在控制台输入 po self.view.frame ...

  • Xcode LLDB Debug 教程(二)

    闲言少叙,直入正题。 开胃小菜--简单的断点调试 在xcode中打开一个app,在想要break的行号上单击,即可...

  • iOS - LLDB调试

    LLDB(Low Lever Debug) LLDB是默认内置于Xcode中的动态调试工具。标准的 LLDB 提供...

  • iOS逆向与安全5.1:LLDB

    LLDB LLDB(Low Lever Debug)默认内置于Xcode中的动态调试工具。标准的 LLDB 提供了...

  • 09---LLDB

    [TOC] LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具。标准的 LLDB ...

  • LLDB基本指令

    LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具。标准的 LLDB 提供了一组广...

  • iOS逆向-LLDB(VII)

    LLDB(Low Lever Debug),默认内置于Xcode中的动态调试工具。标准的 LLDB 提供了一组广泛...

  • LLDB语法基础 (一)

    前言 LLDB(Low Lever Debug)默认内置于Xcode中的动态调试工具。标准的LLDB提供了一组广泛...

网友评论

    本文标题:Xcode LLDB Debug 教程(一)

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