主题说这一切真的......有没有适合Xcode调试器的好教程?我找到了一些东西,但没有什么全面的或足够深的东西。我现在的问题是这个......
#0 0x90d9c688 in objc_msgSend
#1 0x30506515 in NSPopAutoreleasePool
#2 0x30901697 in _UIApplicationHandleEvent
#3 0x32046375 in PurpleEventCallback
#4 0x30245560 in CFRunLoopRunSpecific
#5 0x30244628 in CFRunLoopRunInMode
#6 0x308f930d in -[UIApplication _run]
#7 0x309021ee in UIApplicationMain
#8 0x00001ff8 in main at main.m:14
......结合这个......
0x90d9c688 <+0024> mov 0x20(%edx),%edi
......而这......
EXC_BAD_ACCESS
......没有多大帮助。或者说,真的。我正在尝试评论代码行,必须有更好的方法。
由于
更新:我想我的发泄可能会让真正的问题分散注意力,尽管提示有助于解释一些事情。我真正得到的不仅仅是对上述内容的解释,而是一般使用调试器。我通常会遇到的问题是:
我知道这些内容很广泛,可能应该单独询问,但我不想把这些可能已经在其他地方记录过的主题弄乱到SO空间。
我还注意到这里有一个几乎重复的问题:What are some Objective-c debugging tips?
答案 0 :(得分:4)
你应该打开NSZombieEnabled来调试这样的过度释放问题:
http://cocoadev.com/index.pl?NSZombieEnabled
http://www.fromconcentratesoftware.com/2007/08/09/nszombieenabled-for-the-debugger-adverse/
http://www.tomwhitson.co.uk/blog/2009/04/debugging-with-nszombiesenabled/
答案 1 :(得分:2)
崩溃在Apple的代码中(这就是为什么调试器没有向您显示源代码),并且它的原因实际上是在其他地方 - 您已经发布了一个应该由自动释放池释放的临时对象。这导致自动释放池崩溃。
你应该只发布以下对象:
retain
init
,copy
和new
方法返回(以及包含这些字词的变体)不幸的是,你无法从调试器中学到这一点,只能从文档和经验中学到......
您可以使用Clang Analyzer查找此类错误(有时)。
答案 2 :(得分:2)
这是关于XCode 4调试器功能的great tutorial。
关于为什么调试器从源代码视图进入汇编视图的问题... 当代码的执行进入不属于源代码文件的类时,它进入汇编视图......例如。当你踩到你使用的框架的一部分代码时,比如UIKit。