iOS开发 -- LLDB调试器常用命令

简介

它是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。我们可以简单的理解成它是一个调试器。运行到断点处时,控制台就会出现LLDB的调试命令行。我们只需在这里进行调试。

打印

打印:p,print的缩写:该命令如果打印的是简单类型则会列出简单类型的的类型和值,如果是对象会打印出对象的地址。
po,print Object 的缩写,用于输出OC对象

image.png

ios在lldb调试器动态修改属性或者调用方法

在断点调试时使用这个方法可以直接修改变量的属性值,而不用先修改代码再重新运行程序到此处,便于调试
调用方法call 或者p
对方法进行动态的调用。
在断点处调用方法,比如将view的背景色设置为红色。

call self.view.backgroundColor = [UIColor redColor]

执行表达式

expr:expression的缩写,和call方法类似。可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。
如上图,你在控制台输入
expr a=2
你就能看到
(NSInteger) $11 = 2
这是a的值就被动态改成了2
除此之外,还可以使用这个命令生成一个新的对象,如: expr int $b = 0
p $b 这条命令用于输出新申明对象的值(注意要加$)

First throw call stack:不打印错误函数,需要自行抛出异常

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
// Override point for customization after application launch. 
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
return YES;
}
static void uncaughtExceptionHandler(NSException *exception) {
 NSLog(@"%@\n%@", exception, [exception callStackSymbols]);
 }
image.png

寻址命令image(寻找崩溃代码位置)

image命令可用于寻址,有多个组合命令,在控制台输入help image可查看image的用法。比较实用的用法是用于寻找栈地址对应的代码位置,下面我们来举个例子:

NSArray *array = @[@1,@2];
NSLog(@"%@",array[2]);

会崩溃并且输出以下异常

image.png

箭头标注的是我们的工程名字,相应的栈地址,异常的方法名
使用image lookup --address 0x0000000100daa654 找到栈对应的类文件,以及其所在的行数。


image.png

可以看出是ViewController.m第20行出错了,找到第20行的内容正是NSLog(@"%@",array[2]);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、前言 1、简介 LLDB是新一代高性能调试器。它构建为一组可重用的组件,可以高度利用较大的LLVM项目中的现有...
    张聪_2048阅读 8,175评论 1 10
  • LLDB简介 LLDB是LLVM下的调试器。Xcode从4.0开始编译器开始改用LLVM,相应的调试器也从gdb改...
    99iOS阅读 4,622评论 0 0
  • 今天在使用某个命令调试的时候忽然想不起来了,所以就想着总结一下。掘金地址[https://juejin.cn/po...
    90后的晨仔阅读 4,310评论 0 3
  • 级别: ★☆☆☆☆标签:「Xcode控制台调试」「iOS 调试台」「iOS Console」作者: Xs·H[h...
    QiShare阅读 8,580评论 0 35
  • 前言 今天花了一天的时间终于把iOS的几种常见的调试方法给学习了一下,在这里给大家分享一下LLDB的使用,同时也是...
    Peak_One阅读 13,792评论 5 33