Xcode调试技巧

重写模型的debugDescription方法,利用po调试

// 重写对象的debugDescription 利用PO 调试模型
- (NSString *)debugDescription
{
//    return [NSString stringWithFormat:@"<%@:%p>:%@",[self class],&self,@{@"name":_name,@"age":_age}];
    //初始化一个字典
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    
    //得到当前class的所有属性
    uint count;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    
    //循环并用KVC得到每个属性的值
    for (int i = 0; i<count; i++) {
        objc_property_t property = properties[i];
        NSString *name = @(property_getName(property));
        id value = [self valueForKey:name]?:@"nil";//默认值为nil字符串
        [dictionary setObject:value forKey:name];//装载到字典里
    }
    //释放
    free(properties);
    //return
    return [NSString stringWithFormat:@"<%@: %p> -- %@",[self class],self,dictionary];
    
}

p:可以用来打印基本数据类型。

bt:打印当前线程堆栈信息

如果要打印所以线程堆栈信息,使用:bt all即可

image:常用来寻找栈地址对应代码位置:

例如: image lookup --address 0x0000000104c25550

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 剑未配好,出门已是江湖。 最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时...
    和珏猫阅读 12,606评论 9 75
  • 前言 Xcode调试(debug)是每位IOS开发者经常做的事,很基础也很重要,学到一些调试技巧无疑会给工作带来很...
    xmy1012阅读 5,540评论 0 1
  • 一. 断点 Xcode支持很多种不同类型的断点,包括普通断点、符号断点、异常断点、watch断点、OpenGL E...
    TKkk阅读 10,543评论 2 12
  • 1.添加异常断点(Exception Breakpoint) 2.添加符号断点(Symbolic Breakpoi...
    深山问阅读 1,706评论 0 1
  • “安迪,今天晚上有时间么” “没什么安排” “太好了,晚上一起吃饭?” “好” “那等你下班我去接你” “会不会麻...
    野生根号三阅读 3,283评论 0 2

友情链接更多精彩内容