XCODE Debug模式资料整理

2020-01-18 17:33:48王冬梅

可以用下面的这段宏


//A better version of NSLog
#define NSLog(format, ...) do { 
fprintf(stderr, "<%s : %d> %sn", 
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], 
__LINE__, __func__); 
(NSLog)((format), ##__VA_ARGS__); 
fprintf(stderr, "-------n"); 
} while (0)

关于宏的威力 大家可以乱入我的博文《 iOS中的预编译指令的初步探究》

这样打印出来的东西才像话嘛(其实NSLog的打印是非常低效的,甚至比print低100倍,感兴趣自己翻翻苹果手册咯)。 
使用objc语言(强类型)并且用NSLog打印的时候,常常搞不清楚NSLog(@“%?”,xxx) xxx这种类型该是什么什么类型输出,应该是%d呢还是%@亦或是%f???傻傻分不清楚~,所以玩转NSLog你应该要知道以下这几个全局方法!

图17

XCODE,Debug,Debug详细介绍,Debug技巧

开启僵尸对象(Enable NSZombie Objects)

Xcode可以把那些已经release掉得对象,变成“僵尸”,当我们访问一个Zombie对象时,Xcode可以告诉我们正在访问的对象是一个不应该存在的对象了。因为Xcode知道这个对象是什么,所以可以让我们知道这个对象在哪里,以及这是什么时候发生的。

所以Zombies是你的好基友!他可以让你输出的信息更具体!!

具体这样做:

图15

XCODE,Debug,Debug详细介绍,Debug技巧
自己再试试输出Object的信息咯,是不是很棒呢?

僵尸只能用在模拟器和OC语言哦~

进击的码农

如果说你已经把打印的艺术运用的风生水起了,并且断点的使用可以信手拈来随心所欲,那么你已经在与逼优鸡的对峙中,稳操大部分胜券了,你已经是一个孤高冷艳的程序员了,俯视一切低能的逼优鸡了!但是!面对更强大的敌人——你那秃顶1000°近视牙齿夹着韭菜的有着十年对战逼优鸡的同事面前、以及笑里藏刀眼睛有眼屎但是能用眼神杀死你的面试官…… 对于他们,你还是太弱,你的技能的磨练还太少!所以你必须要进击!!比逼优鸡还要强大的敌人出现了!我们需要更强大的武器。

Console(lldb 命令)

我们的目标是要武装到鼻毛!console窗口大家知道就是哪个黑乎乎好多字会滚出来,尤其是被逼优鸡干到的时候,那么同学们有没有遇到这种console呢

图16

XCODE,Debug,Debug详细介绍,Debug技巧
我们家的编译器历史 敬请乱入 《iOS中的预编译指令的初步探究》 ,没错我们现在正在使用着世界上最好的c、c++、oc、swift的编译器——LLVM,lldb就是这个世界上最好的LLVM的调试器!不要害羞,因为我们是最优秀的!所以肯定要用最好的!千万别客气哟,随便用,就像自己家一样啊,啊 哈哈 吃吃吃 别只顾着吃饭,多夹菜……哎~博主好客的职业病又犯了~,什么?你不知道在哪里用lldb?