如何在启用断点时调试在主循环之前崩溃的Cocoa应用程序?

时间:2011-01-23 18:05:43

标签: cocoa xcode crash debugging breakpoints

我有一个Cocoa应用程序,它在调试和发布模式下都可以运行,但是一旦我在启用了断点的调试模式下运行它就崩溃了。崩溃发生在应用程序加载完成之前,堆栈跟踪提示KVO问题。不幸的是,由于崩溃发生在我的代码之外,我在调试器中看到的只是(通用)方法名称和汇编代码。我如何找到根本原因?

堆栈追踪:

#0   0x98dde4e6 in objc_exception_throw
#1   0x943443e8 in +[NSException raise:format:arguments:]
#2   0x9434435a in +[NSException raise:format:]
#3   0x9092bc49 in -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:]
#4   0x9092b864 in -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:]
#5   0x938a8a63 in -[NSController removeObserver:forKeyPath:]
#6   0x0037807a in dyld_stub_write
#7   0x00378b0e in dyld_stub_write
#8   0x003774d6 in dyld_stub_write
#9   0x003775fe in dyld_stub_write
#10  0x936b8c3b in -[NSCustomObject nibInstantiate]
#11  0x936b8a49 in -[NSIBObjectData instantiateObject:]
#12  0x936b7d4e in -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:]
#13  0x936b61f4 in loadNib
#14  0x936b55ed in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
#15  0x936b54fe in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
#16  0x936b5449 in +[NSBundle(NSNibLoading) loadNibNamed:owner:]
#17  0x936b224d in NSApplicationMain
#18  0x00001f68 in main at main.m:13

1 个答案:

答案 0 :(得分:1)

查看堆栈的底部。这是nib加载代码。鉴于堆栈顶部的KVO,我的第一个猜测是你将某些东西连接到插座或通过绑定但没有正确定义你连接的属性。确保包含您定义的任何属性的访问者。