iOS开发调试技巧(一)

来源:互联网 发布:在线视频录制软件 编辑:程序博客网 时间:2024/06/06 11:43

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

此文也可以进入我的简书阅读

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

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


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


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



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

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


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


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


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


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


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


下图为打印的结果


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



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

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


下图为添加后的结果


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



4、符号断点

创建方式如下图


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


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


下图为程序中断地方



5、僵尸对象

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

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



6、lldb命令

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


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



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 ++;

}

}


下图为打印的结果


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

0 0
原创粉丝点击