无法在xcode 4.2中看到僵尸对象

时间:2011-12-12 07:25:48

标签: iphone xcode4.2 exc-bad-access nszombie

我有一个应用程序曾经在ios4和早期的操作系统中正常工作,但我现在看到频繁的EXC_BAD_ACCESS尝试在ios5的模拟器上运行它。不幸的是,我现在在xcode 4.2上,当我收到错误时,我无法看到我的僵尸对象。

应用程序永远不会在手机上崩溃,但它一直在模拟器上崩溃,所以我想在提交更新之前看到导致崩溃的原因。每当我收到错误(并且它发生在多个视图中)时,我得到

int retVal = UIApplicationMain(argc, argv, nil, nil); Thread 1: Program received signal: "EXC_BAD_ACCESS"

我从诊断屏幕和变量选项卡启用了NSZombie,但我仍然看不到任何东西。甚至在didFinishLaunchingWithOptions中添加一行,其目的是多次释放相同的对象,这在启动时会给我这个错误但从未报告为NSZombie。

我做错了什么?

此外,当发生这些错误时,这就是我在调试窗口中看到的。这看起来像堆栈跟踪但是有什么方法可以用它来获取行号吗?

#0  0x020b609b in objc_msgSend ()
#1  0x002ba9d0 in -[NSURLConnectionInternal initWithInfo:] ()
#2  0x002bb4df in -[NSURLConnectionInternalConnection initWithInfo:] ()
#3  0x002ba0af in -[NSURLConnection(Private) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] ()
#4  0x002ba1f6 in -[NSURLConnection initWithRequest:delegate:] ()
#5  0x002ba17b in +[NSURLConnection connectionWithRequest:delegate:] ()
#6  0x01f13d81 in +[NSObject performSelector:withObject:] ()
#7  0x001df9ef in __NSThreadPerformPerform ()
#8  0x01ee697f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#9  0x01e49b73 in __CFRunLoopDoSources0 ()
#10 0x01e49454 in __CFRunLoopRun ()
#11 0x01e48db4 in CFRunLoopRunSpecific ()
#12 0x01e48ccb in CFRunLoopRunInMode ()
#13 0x02775879 in GSEventRunModal ()
#14 0x0277593e in GSEventRun ()
#15 0x00516a9b in UIApplicationMain ()
#16 0x00055919 in main at /Volumes/Data/xxxx/Classes/internal/main.m:14
#17 0x00002d75 in start ()

1 个答案:

答案 0 :(得分:1)

使用Instruments调试僵尸通常最简单。有一个预设/模板工具。当僵尸收到消息时,仪器将暂停您的程序,您甚至可以使用它来查看每个参考计数操作。