2011-01-23 22 views
0

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

堆栈跟踪:

#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 
+0

你有一个例外,而不是崩溃。这个异常可能会导致崩溃,但我不确定你是否清楚了差异。是否抛出异常的断点,但在内部被捕获? – 2011-01-23 22:29:09

回答

1

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

相关问题