Невозможно увидеть объекты зомби в xcode 4.2

У меня было приложение, которое отлично работало в 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 ()

person Nefsu    schedule 12.12.2011    source источник


Ответы (1)


Обычно проще всего отлаживать зомби с помощью инструментов. Для этого есть пресет/шаблон инструмента. Инструменты остановят вашу программу при получении сообщения от зомби, и вы даже можете использовать его для просмотра каждой операции подсчета ссылок.

person justin    schedule 12.12.2011
comment
Итак, что-то изменилось в xcode 4.2, чтобы не показывать вам сообщения для объектов-зомби в консоли? - person Nefsu; 14.12.2011