Me estoy quedando sin ideas. Recibo un EXC_BAD_ACCESS
en un proyecto usando ARC. De acuerdo con el depurador está dentro de main()
. NSZombieEnabled está configurado en SÍ, pero no veo ninguna pila de llamadas o Clase/Tipo ni nada. Lo mismo para el Inspector/Perfil. Todo lo que obtengo es "tiempo de espera de la sesión" un tiempo después de que la aplicación se bloquee.EXC_BAD_ACCESS dentro de main() con ARC pero no hay ninguna pista sobre el error
Y es difícil de localizar dentro de mi código.
me he fijado como rastros
NSLog(@"CrashLog: <%@:%@:%d:%s>", NSStringFromClass([self class]),
NSStringFromSelector(_cmd), __LINE__, __FILE__);
todo mi código en la silueta de la mano y la salida de los métodos, pero todavía no se identificó ningún patrón útil. Todo lo que puedo ver es que todos mis métodos en cuestión ya se han dejado cuando se lanza el EXC_BAD_ACCESS
.
¿Alguna idea sobre cómo aislar el problema?
Tim sugirió utilizar la traza inversa (bt) en gdb. El resultado es:
#0 0x0be87580 in TI::Favonius::BeamSearch::choose_hit_test_node()
#1 0x0be87b5f in TI::Favonius::BeamSearch::update_for_touch()
#2 0x0be8ee32 in TI::Favonius::StrokeBuildManager::update_search_for_touch()
#3 0x0be8f58f in TI::Favonius::StrokeBuildManager::key_down_or_drag_hit_test_for_UI()
#4 0x0be6ba8b in TIInputManagerZephyr::simulate_touches_for_input_string()
#5 0x0be7e5d9 in -[TIKeyboardInputManagerZephyr candidates]()
#6 0x00678345 in -[UIKeyboardImpl generateAutocorrectionReplacements:]()
#7 0x007dcaec in __71-[UITextInteractionAssistant scheduleReplacementsForRange:withOptions:]_block_invoke_0()
#8 0x007f6db2 in -[UITextSelectionView calculateAndShowReplacements:]()
#9 0x00e255fd in __NSFireDelayedPerform()
#10 0x01a03976 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__()
#11 0x01a03417 in __CFRunLoopDoTimer()
#12 0x019667e0 in __CFRunLoopRun()
#13 0x01965dd4 in CFRunLoopRunSpecific()
#14 0x01965ceb in CFRunLoopRunInMode()
#15 0x01ccb879 in GSEventRunModal()
#16 0x01ccb93e in GSEventRun()
#17 0x0050d38b in UIApplicationMain()
#18 0x000033e0 in main (argc=1, argv=0xbffff5fc) at /Users/Hermann/AppDev/fcApp/fcApp/main.m:16
Gracias Lou. Para 1. Estoy haciendo eso con las solicitudes http asincrónicas. Sin embargo, estoy bastante seguro de cancelar todas las conexiones abiertas dentro del método de depuración de los objetos solicitantes. Sin embargo, lo verificaré dos veces. Para 2 .: Gracias. No voy a verificar si estaba usando self.var en todos los casos relevantes. 3. no debería aplicarse a mi aplicación en absoluto. Sin embargo, puede ser un poco más específico en "guardia malloc". Esto es una novedad para mí o realmente no entendí lo que querías decir. (El inglés no es mi lengua materna). Gracias hasta ahora. –
Siga el enlace para la ayuda de Guard Malloc. Hace que el montón sea más sensible a los problemas. –
Esto no fue directamente helpfu. Sin embargo, siguiendo el consejo se redujo significativamente la ventana oportuna. Es mucho más fácil encontrar alguna causa raíz si tienes una idea, al menos, qué mirar o para qué. Estás ejecutando un gran blog. :) –