iOS开发调试技巧(一)

在iOS开发中调试是必不可少的,同时也是必须学会的技能,重要性不言而喻。今天我们就来初步了解下一些常用技巧。暂时使用的是OC语言。

1、普通断点(经常用到)

当程序运行到断点处时会停止运行,只要在显示行数的相对应的地方点击一下就添加了一个端点。

iOS开发调试技巧(一)_第1张图片

添加的端点可以在如下图的地方查看。

iOS开发调试技巧(一)_第2张图片

程序运行到断点处,可以看到如下图显示的参数

iOS开发调试技巧(一)_第3张图片

2、条件断点(看自己情况而定使用)

在断点处右击按如下图选择

iOS开发调试技巧(一)_第4张图片

在弹出框中设置你想中断程序的条件

iOS开发调试技巧(一)_第5张图片

下图就是程序中断之前打印出的结果

iOS开发调试技巧(一)_第6张图片

还可以通过设置Ignore的参数,忽略前n次的断点运行,程序会在第n+1 次的时候中断

iOS开发调试技巧(一)_第7张图片

下图是运行2次后中断结果

iOS开发调试技巧(一)_第8张图片

还可以通过添加 Action 来进行更多的配置,下图是查看断点所在处的方法调用的次数, %B 是断点所在的方法名, %H是断点调用的次数,注意:选中 Options

iOS开发调试技巧(一)_第9张图片

下图为打印的结果

iOS开发调试技巧(一)_第10张图片

添加Action中的 Sound,会让程序有节奏的调用,不回马上执行完,在调用的同时可以听到方法调用的声音

iOS开发调试技巧(一)_第11张图片

3、异常断点(经常使用)

下图为添加异常断点的操作地方,首先按图中上面的尖头点击进入这个模式,再点击左下角 + 按钮添加

iOS开发调试技巧(一)_第12张图片

下图为添加后的结果

iOS开发调试技巧(一)_第13张图片

添加异常断点后,当程序遇到异常crash时,程序就会在出现异常代码的地方终止。如果没有打异常断点程序会在main.m中终止。下图为数组越界的一个示范

iOS开发调试技巧(一)_第14张图片

4、符号断点

创建方式如下图

iOS开发调试技巧(一)_第15张图片

符号断点可以在你指定的[类名 方法名]中中断执行,如下图添加,此时程序会在ViewController类的loadData中中断

iOS开发调试技巧(一)_第16张图片

还可以只添加方法,此时程序会在整个工程中只要遇到该方法就会中断

iOS开发调试技巧(一)_第17张图片

下图为程序中断地方

iOS开发调试技巧(一)_第18张图片

5、僵尸对象

在iOS开发中,把已经release但还没完全消失的对象称作僵尸对象,对已经release对的对象再次释放,就会发生异常。使用ARC后,对象释放产生的异常已经很少,但是偶尔还是会出现。

开启僵尸对象模式后就能快速定位异常位置。开启的方式如下:Product-->Scheme-->Edit Scheme,再按照下图勾选就可以了。

iOS开发调试技巧(一)_第19张图片

6、lldb命令

Xcode中使用的llvm编译器,而lldb是llvm中的调试器,我们可以使用一些简单的命令进行调试,拿上面那个for循环作为测试代码

iOS开发调试技巧(一)_第20张图片

程序运行后中止在断点处,在下方打印出区域使用po命令、print命令打出相对应的信息,如下图

iOS开发调试技巧(一)_第21张图片

7、Log打印

NSLog打印信息一般是初学者最喜欢的打印,通过打印出的信息产看程序运行的结果,但是打印的信息较少,本身NSLog效率也比较低,使用下面的这个宏能够打印出所在类名、所在方法名、行号、具体时间。

#import"ViewController.h"

#define DebugLog(fmt, ...) do { \

fprintf(stderr,"<%s> %s Line %d\n", [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],\

__PRETTY_FUNCTION__, __LINE__); \

(NSLog)((fmt), ##__VA_ARGS__); \

fprintf(stderr,"----------\n"); \

} while (0)

@interfaceViewController()

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

[selfloadData];

}

- (void)loadData

{

intcount =10;

while(count <15) {

DebugLog(@"count = %d",count);

count ++;

}

}

iOS开发调试技巧(一)_第22张图片

下图为打印的结果

iOS开发调试技巧(一)_第23张图片

由于时间关系,暂时只整理了这些,后续再更新

你可能感兴趣的:(iOS开发调试技巧(一))