Objective c 当调试器赢了';t崩溃和崩溃日志缺少详细信息?

Objective c 当调试器赢了';t崩溃和崩溃日志缺少详细信息?,objective-c,debugging,crash,Objective C,Debugging,Crash,(Draco在下面的核对回复中提供了一个极好的想法。) 当应用程序委托处理自定义URL,然后在另一个线程上启动操作时,程序中会发生此崩溃。有时操作完成后,我可以在UI中看到结果。但它总是崩溃 只有在没有调试器的情况下运行时才会发生这种情况。以下是崩溃日志: 0 libobjc.A.dylib 0x37d9ff7e objc_msgSend + 22 1 CoreData 0x3634bbd2 -[_PFMana

(Draco在下面的核对回复中提供了一个极好的想法。)

当应用程序委托处理自定义URL,然后在另一个线程上启动操作时,程序中会发生此崩溃。有时操作完成后,我可以在UI中看到结果。但它总是崩溃

只有在没有调试器的情况下运行时才会发生这种情况。以下是崩溃日志:

0   libobjc.A.dylib                 0x37d9ff7e objc_msgSend + 22
1   CoreData                        0x3634bbd2 -[_PFManagedObjectReferenceQueue _processReferenceQueue:] + 934
2   CoreData                        0x3634efd0 _performRunLoopAction + 196
3   CoreFoundation                  0x359d2b14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
4   CoreFoundation                  0x359d0d50 __CFRunLoopDoObservers + 252
5   CoreFoundation                  0x359d10aa __CFRunLoopRun + 754
6   CoreFoundation                  0x3595449e CFRunLoopRunSpecific + 294
7   CoreFoundation                  0x35954366 CFRunLoopRunInMode + 98
8   GraphicsServices                0x375f0432 GSEventRunModal + 130
9   UIKit                           0x33460cce UIApplicationMain + 1074
10  myApp                           0x000e2770 main (main.m:15)
11  myApp                           0x000e2728 start + 32
它看起来像是试图响应一个事件,或者更具体地说,响应一个通知。如果是这样的话,我猜标记的观察者已经被移除,或者它添加到的对象已经被释放

有没有办法拦截通知并查看其中的内容?如果可以的话,我可能可以确定哪个观测者失踪了,或者至少缩小范围


添加更新以解决WrightsCS关于所有异常断点的观点。这两个都设置为抛出时中断,所有例外。(抓球时断球也不起作用。)

在调试器中运行时,如果没有异常、没有崩溃,这是如何工作的

更新2

重新命名以提供其他用户更广泛的搜索范围。
Was:“应用程序在没有调试器的情况下崩溃,但在没有调试器的情况下崩溃。崩溃日志告诉我什么?”

这并没有回答您明确的问题,但它确实回答了隐含的问题:

“当调试器不会崩溃且崩溃日志缺少详细信息时,如何调试崩溃?”

在XCode Organizer中,您可以查看的不仅仅是崩溃日志。在Organizer Devices部分中查看控制台输出;查看发生故障的设备,然后单击控制台。您应该能够在那里看到NSLog语句的调试输出,即使它没有使用调试器运行

在应用程序运行时,即使调试器未运行,也可以在XCode中查看这一点

控制台显示的不仅仅是应用程序的输出,因此您必须对其进行筛选以查看应用程序的输出。您将在相应的行上看到应用程序名称

您可以使用为调试、特别或发布而编译的代码来完成此操作。使用其他人的应用程序进行尝试。(用Twitter试试。你会在那里看到一些调试日志。用Safari试试。你可能会看到其他挂起的应用被jetsam杀死。)


您可能看不到它崩溃的那一行,但是您应该能够通过明智地插入一些调试代码来缩小它的范围

你能至少告诉我你为什么投了反对票吗?我被这件事难住了。我不知道为什么这件事被否决了。你是说只有当你没有从Xcode运行应用程序时才会发生崩溃(在这种情况下,世界上所有的断点都不会帮助你?)。你能否更清楚地描述一下这一点,这可能是你被否决的原因。此外,这可能不是完整的日志,你可能在问题中遗漏了重要信息。请参阅和相关的WWDC视频,以获取有关崩溃日志的帮助。感谢您的兴趣,jr。我可能可以将此范围缩小到大约2000行代码。我想我为这个问题添加了一些上下文,即如何在操作之前、期间和之后观察通知(NSO操作)。我可能会在这些通知中看到一些熟悉的东西,这些东西可能会引导我找到崩溃的原因。然后我可以更精确地观察代码。同时,我想我会因为问了一个我无法回答的诚实问题而受到打击。我会查看提交日志,看看能不能找到什么。哦,谢谢你的第二条评论。那可能会有帮助。太棒了!我试过你说的,控制台看起来像是一个我可以找到很多答案的地方。我做了一些快速的实验来添加一些日志记录,看起来这将非常有帮助。我可以在被拴住的时候实时观看崩溃,但不需要运行调试器。为了帮助他人解决交通事故问题,我可以将问题的主题改为您对隐含问题的陈述。这比我的具体问题有更广泛的用途。