Xcode调试

在昨天的Demo中感觉对debug的理解还差很多。对于我这种经常漏写各种符号标点大小写的来说,如果能把debug理解好了,会有事半功倍的效果。找了一些文档,好好学习。

官方文档:Debug Your App

My App Crashed, Now What? – Part 1

Intermediate Debugging with Xcode 4.5

Xcode调试总结

捕获异常

异常断点(Exception breakpoint)
如果添加了异常断点,当程序每次发生了异常,都会被中断。一般用来捕获未知异常。如下示例:

Terminating app due to uncaught exception ’NSRangeException’, reason:
’-[__NSCFArray objectAtIndex:]: index (10) beyond bounds (3)
Image Title
Image Title

标志含义

SIGABRT(好处理)
EXC_BAD_ACCESS(一般内存问题)
SIGBUS
SIGSEGV

一般错误

[UINavigationController setList:]: unrecognized selector sent to instance 0x6d4ed20

这种要不就是这个类没这个方法,或者调用方法的对象错误,或者拼错,比较简单

This class is not key value coding-compliant

Problems[14961:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException', 

reason: '[<MainViewController 0x6b3f590> setValue:forUndefinedKey:]: this class is not

key value coding-compliant for the key button.'
  1. 有时会碰到这种错误,印象里是请求的网络列表返回为空,出现了个这么诡异的现象,这是一种情况。

  2. NSUnknownKeyException指示了未知的key,而这个未知的key出现在MainViewController里,这个key的名字是button
    先看nib,在这个例子里有一个button,和MainViewController的属性button连接了IBOutlet,但是@property对应的@synthesize没有写,出现了这个问题,虽然在iOS6可以不用写@synthesize了,但是在老版本可能还会出现这个问题

  3. 总结一下,“This class is not key value coding-compliant”这个问题出现在NIB相关的地方,一般是iboutlet已经连接,但是这个属性却不存在,常常发生在ib连着呢,属性给删了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LLVM简介 XCode4.0以后,LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化...
    苦工阅读 9,852评论 1 16
  • 之前使用Xcode调试的时候,只知道使用断点,以及调试器中continue和step over的使用,定位错误的时...
    月咏蝴蝶阅读 887评论 0 2
  • 剑未配好,出门已是江湖。 最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时...
    和珏猫阅读 8,292评论 9 75
  • Run 适用场景:可以稳定复现的问题 Debug -> Attach to Process 前提:签名的Provi...
    观星阅读 2,189评论 0 0
  • 子曰:“里仁为美,择不处仁,焉得知!” 翻译人以能居于仁道为美。如果选择不居于仁道,那怎么能算是“知”呢? 知知者...
    下岗奶爸阅读 276评论 0 1