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]);

你可能感兴趣的:(iOS开发 -- LLDB调试器常用命令)