美文网首页
LLDB调用

LLDB调用

作者: __weak | 来源:发表于2018-04-26 16:09 被阅读32次

    LLDB是个开源的内置于XCode的调试工具,这里来理一

    常常用法。lldb对于命令的简称,是头部匹配方式,只要不混淆,你可以随意简称某个命令。结果为在xcode下验证所得,可能与其它平台有所误差。

    1打印值,修改值,调用方法

    1.1 p,po打印值

    打印相关的命令有:p,

    po。p和po的区别在于使用po只会输出对应的值,而p则会返回值的类型以及命令结果的引用名。

    image.png

    对比结果:

    PO:输出值

    号码:输出值+值类型+引用名+内存地址(xcode中中有内存地址,其它平台不确定)

    除此之外,对还隐藏了一个有意思的功能,常量的进制转换:

    image.png

    1.2表达修改参数值

    感觉EXP命令是调试过程中最有价值有命令了,它可以打印值,修改值。

    image.png

    表达:同样可以输出值+值类型+引用名,但其一般用于修改。

    1.3调用方法调用

    在断点调用某个方法,并输出此方法的返回值。

    image.png

    拨打:同样为输出值+值类型+引用名

    2线程

    2.1堆栈打印线程回溯

    如果嫌堆栈打印太长,可以加一个值限制,如bt 10,只打印

    image.png

    2.2线程返回跳出当前方法的执行

    Debug的时候,也许会因为各种原因,我们不想让代码执行某个方法,或者要直接返回一个想要的值。这个时候就该线程返回上场了。

    有返回值的方法里,如:numberOfSectionsInTableView: ,直接线程返回10,就可以直接跳过方法执行,返回10。

    image.png

    2.3流程控制

    实际上使用的Xcode自带的可视化工具来控制“继续”,“暂停”,“下一步”,“进入”,“跳出”更简单

    image.png

    2.4跳帧选择N

    2.1中打印有10帧,如果我想跳转到第1帧:frame select 1

    image.png

    2.5查看帧变量帧变量

    image.png

    3图像

    3.1图像查找地址查找崩溃位置

    当你遇见数组崩溃,你又没有找到崩溃的位置,只扔给你一堆报错信息,这时候图像查询来帮助你。

    image.png

    寻找自己项目的标识,看到帧3位置,你只需这样查找位置:

    image.png

    项目中FW_MyHomeTableView.m:243,完美!

    3.2图像查找名称查找方法来源

    此命令可以用来查找方法的来源包括在第三方SDK中的方法,也能被查到。

    例:查找transformOtherModelToSuit:

    image.png

    3.3 image lookup-type查看成员

    查看某个类的所有属性和成员变量。不过貌似框架库中文件不能查看。

    image.png

    4断点

    4.1文件名+行号断点集-f xxx -l xxx

    我们平时操作的Xcode,在某一行点下断点,其实操作的就是这个命令。

    image.png

    4.2函数名断点

    4.2.1方法名断点断点set -n方法名

    image.png

    提示:这里要说一下,xcode其实也有函数名断点,不过用断点set -n实现,比xcode下断点快N倍,不过xcode下的断点还给提示所有断到的位置。

    4.2.2类中方断断点集-n“ - [类名方法名]

    image.png

    注意: - [FW_MyHomeViewController viewDidLoad],外面一定要加双引号,不然会误识别为 - [FW_MyHomeViewController`

    4.3条件断点断点set -c“xxxx”

    和xcode中符号断点功能相同,我在FW_HomeCell.m 362行下断点,但又想过滤宽度> 68的状态,操作如下:

    image.png

    4.4查看断点列表断点列表

    image.png

    4.5禁用/启用断点断点禁用/启用

    image.png

    4.6移除断点断点删除

    image.png

    结语:

    有了这些命令,调试起来肯定就得心应手了总结下常用的,供多看几遍加深回忆:

    堆栈相关:bt查看堆栈,帧选择跳帧,帧变量查看帧参数,线程返回跳出当前执行,【step / finish / next / continue】进入/跳出/下一步/跳出本断点

    断点相关:断点集-f -l -c条件断点,断点集-n方法断点,断点删除断点移除,断点列表断点列表

    image命令:image lookup -address崩溃定位,image lookup -name方法来源,image lookup-type查看成员

    相关文章

      网友评论

          本文标题:LLDB调用

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