Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪里有关于如何使用Xcode';调试器正确吗?_Xcode_Debugging - Fatal编程技术网

哪里有关于如何使用Xcode';调试器正确吗?

哪里有关于如何使用Xcode';调试器正确吗?,xcode,debugging,Xcode,Debugging,主题说的都是真的……有没有关于Xcode调试器的好教程?我发现了点点滴滴的东西,但没有什么全面或深入的东西。我现在的问题是这 #0 0x90d9c688 in objc_msgSend #1 0x30506515 in NSPopAutoreleasePool #2 0x30901697 in _UIApplicationHandleEvent #3 0x32046375 in PurpleEventCallback #4 0x30245560 in CFRunLoopRunSpeci

主题说的都是真的……有没有关于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
…帮不了什么忙。或者说,真的。我求助于注释代码行,必须有更好的方法

谢谢

更新:我想我的发泄可能有点分散了我对真实问题的注意力,尽管这些技巧有助于解释一些事情。我真正想了解的不仅仅是对上述内容的解释,而是调试器的一般用法。我通常有以下问题:

  • 为什么当我跨过或跨入时,调试器有时会从源代码视图转到(我假设的)汇编代码?有没有办法让我一直同时看到这两种情况
  • 我应该在汇编代码中寻找什么具体的东西,或者在特定情况下有什么可以帮助我的东西吗
  • 看起来断点允许操作,所以我很好奇如何利用断点,而不是在代码中添加NSLog语句
我知道这些问题涉及面很广,可能应该单独提出,但我不想把这些可能已经在别处记录的主题弄得杂乱无章


我还注意到这里有一个几乎重复的问题:

崩溃发生在苹果的代码中(这就是调试器没有向您显示源代码的原因),而导致崩溃的原因实际上是在其他地方——您释放了一个临时对象,该对象应该由自动释放池释放。这导致自动释放池崩溃

您应该只释放以下对象:

  • 您已使用
    retain
  • 仅通过
    init
    copy
    new
    方法返回(及其包含这些单词的变体)
不幸的是,您无法从调试器中了解这一点,只能从文档和经验中了解


您可以使用查找此类错误(有时)。

您应该启用NSZombieEnabled,以便针对以下发行版问题进行调试:

下面是一个关于XCode 4调试器功能的介绍

关于调试器为什么从源代码视图转到程序集视图的问题。。。
当代码的执行进入不属于源代码文件的类时,它会进入程序集视图。当您使用UIKit等框架中的代码时。

如果我能将这两个答案都作为公认答案进行检查,我会这样做,尽管他们没有以我希望的方式回答问题。最终,这在这里并不重要。因此,我将首先介绍导致崩溃的原因,尽管我认为我需要再次检查内存管理规则,以了解为什么会发生崩溃。多亏了这两个!我知道这是个老问题。但对于任何一个偶然发现这一点的人来说,我发现这绝对是极好的。
EXC_BAD_ACCESS