iOS调试 LLDB使用

我们职责是开发iOS应用,我们要做的就是生产bug和解决bug,调试对于每一个开发人员来说都是亘古不变的操作。如何高效调试提高我们的装X技能了,所以掌握Xcode的LLDB最为重要。

LLDB

首先瞟一眼LLDB长啥样,如下图:
LLDB调试
LLDB 是一个有着 REPL 的特性和 C++ 、Python 插件的开源调试器。

LLDB命令结构

<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]

其中:

  • command、subcommand:LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。
  • action:命令操作,想在前面的命令序列的上下文中执行的一些操作。
  • options:命令选项,行为修改器(action modifiers)。通常带有一些值。
  • argument:命令参数,根据使用的命令的上下文来表示各种不同的东西。
  • []:表示命令是可选的,可以有也可以没有。
    比例 po isFinish, po就是命令操作(print -object 简写), isFinish就是命令参数

原始命令

原始命令会将命令后面所有东西当做参数处理,很多原始命令也可以带命令选项,但是需要加-命令选项 -- 命令参数区分, 注意–后的空额

(lldb) expression -o -- aTureValue
true
// 错误示范
(lldb) expression -o --aTureValue
error: <EXPR>:3:3: error: consecutive statements on a line must be separated by ';'
-o --aTureValue
  ^
  ;

常用命令

命令全命令介绍
help-命令提示,会罗列所有命令,非常有用,所有命令忘记了。有它就可以找其他命令了
aapropos命令辅助,apropos 关键字可以搜索出相关的命令
e、ex、exp …expression调试时动态执行表达式,并将结果打印出来,比如值动态更改,UI更改
vo/po-/print -object与expr类似,打印对象,会调用description方法, 推荐使用vo更快,信息更全
v/p-/printprint(type)表达式, 简单打印推荐使用v
call-调用方法
btthread backtrace打印调用堆栈, 查看当前堆栈方法调用非常有用,可以查看程序断点方法执行调用顺序

实例技巧

调试UI

如果在运行界面得时候,有时候需要小调界面,常常需要写代码,然后重新编译,走流程,如果界面逻辑很深则需要很多时间。其实在断点调试的时候就可以执行表达式,刷新界面。

关键代码

// 先执行修改表达式
expression  XXX
// 最后刷新[一定要执行才有效果]
expression CATransaction.flush()

修改背景色为红色

修改前
修改前
修改
修改后
修改后

Tips: 这个调试在viewDidAppear(比如在viewDidLoad断点执行改变UI)执行之前不会立即有效,其他大部分刷新立即有效。

命令概图

在这里插入图片描述

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值