344 votos

iPhone - extraño error al realizar la prueba en simulador de

Me estaba poniendo a prueba mi aplicación en el simulador cuando se estrelló en hacer clic en un botón de un UIAlertView. Dejé de depuración de allí, hizo algunos cambios en el código y construido de nuevo la aplicación. Ahora cuando ejecuto la aplicación, me sale este error en la consola

No se pudo registrar com.myApp.debug con el proceso de arranque del servidor. Error: código de error desconocido. Esto generalmente significa que otro ejemplo de este proceso que ya está en ejecución o está colgado en la debugger.Program de la señal recibida: "SIGABRT".

He intentado eliminar la aplicación en el simulador, haciendo una compilación limpia, pero me sigue apareciendo este mensaje de error al intentar ejecutar la aplicación.

¿Qué debo hacer para ser capaz de ejecutar la aplicación en mi simulador de nuevo?

241voto

smparkes Puntos 9849

estado: esto ha sido visto como recientemente como Mac OS 10.8 y Xcode 4.4.

tl;dr: Esto puede ocurrir en dos contextos: cuando se ejecuta en el dispositivo y cuando se ejecuta en el simulador. Cuando se ejecuta en el dispositivo, desconectar y volver a conectar el dispositivo se parece a arreglar las cosas.

Mike sugirió Ash

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

Esto no funciona todo el tiempo. De hecho, nunca trabajó para mí, pero claramente funciona en algunos casos. No se cual de los casos. Así que vale la pena intentarlo.

De lo contrario, la única forma conocida para solucionar este problema es reiniciar el usuario launchd. Reiniciar va a hacer eso, pero no es menos drástico y más rápido. Tendrás que crear otro usuario admin, pero usted sólo tiene que hacerlo una vez. Cuando las cosas cuña, salga como a ti mismo, inicie la sesión como ese usuario, y matar a los launchd que pertenece a su principal usuario, p. ej.,

sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

sustituyendo el principal nombre de usuario para user_id. Registro de nuevo como su usuario normal le permite volver a su estado normal. Un poco doloroso, pero menos que un completo reinicio.

detalles:

Esto ha empezaron a suceder más a menudo con León/Xcode 4.2. (Personalmente, yo nunca lo vi antes de que la combinación.)

El error parece estar en launchd, de la que hereda la aplicación del proceso como un niño cuando el depurador se detiene depurando sin matarlo. Este se caracteriza por la aplicación de convertirse en un zombie, de tener un estado del proceso de Z en ps.

El meollo de la cuestión parece estar en el proceso de arranque del servidor de nombre que se implementa en launchd. Este (a la medida que yo entiendo) mapas de la aplicación de los identificadores de mach puertos. Cuando el bug se activa, la aplicación muere, pero no se limpian de la secuencia de arranque del servidor nombre del servidor de mapa y como resultado, el proceso de arranque del servidor se niega a permitir a otra instancia de la aplicación para ser registrados bajo el mismo nombre.

Se esperaba (ver los comentarios) que forzar launchd a wait() para el zombie iba a arreglar las cosas, pero no. No es el estado zombie que es el núcleo del problema (que es la razón por la que algunos zombies son benignos), pero el proceso de arranque del servidor de nombre y no se conoce ninguna manera de borrar este corto de matar launchd.

Parece que el error es provocado por algo malo entre Xcode, gdb, y el usuario launchd. Yo sólo repite la cuña mediante la ejecución de una aplicación en el iphone simulator, habiendo dejado de gdb, y, a continuación, hacer una compilación y de ejecución para el ipad simulator. Parece ser sensible al cambio de los simuladores (iOS 4.3/iOS 5, iPad/iPhone). No sucede todo el tiempo, pero con bastante frecuencia cuando estoy de conmutación de los simuladores de mucho.

La matanza de launchd mientras estás conectado va a arruinar su sesión. Cerrar la sesión y volver en no matar el usuario launchd; OS X mantiene el proceso existente a su alrededor. Un reinicio arreglar las cosas, pero es doloroso. Las instrucciones anteriores son más rápidos.

He presentado un error de Apple, por lo que vale. rdar://10330930

156voto

Elliot Kroo Puntos 2199

Trate de salir y reiniciar el simulador? Si "el peor de los casos" siempre se puede intentar reiniciar: en mi experiencia, esto debería solucionar el problema.

70voto

jyap Puntos 3131

Me parece que han empezado a tener este problema con Lion + Xcode 4.2. También he tenido el problema en Xcode 4.3.

He probado todas las sugerencias, pero ninguno de ellos han trabajado aparte de un completo reinicio.

Aquí es cómo determinar si necesita un reinicio rápido.

Lista de todos sus procesos Zombi:

ps -el | grep 'Z'

Si usted ve a su aplicación que aparece como un Zombi proceso necesitará reiniciar su máquina. El mensaje de error indica que "en general, Esto significa que otro ejemplo de este proceso que ya está en ejecución o está colgado en el depurador". Bien, Xcode es la detección de este Zombie proceso que no se puede matar. La única manera de corregirlo es con un reinicio del sistema. :(

EDICIÓN, 20120823: tengo algo mejor conocimiento de los procesos Zombi, así que quería actualizar esta respuesta. Un Zombie proceso se crea cuando un proceso padre no llama a wait() (espere a que el proceso de cambio de estado) sobre la terminación de un proceso hijo. No se puede ejecutar 'matar' directamente en un Zombie proceso, pero si matas el proceso primario, el zombie proceso hijo será 'cosechado' y se elimina de la tabla de procesos.

No he visto este problema en un largo tiempo, así que no he inspeccionado para ver lo que el proceso padre es en este escenario. La alternativa a la matanza del proceso padre es para reiniciar el sistema. :)

20voto

deoryp Puntos 379

Yo solo tuve que esto le suceda a mí: yo era conseguir que el error sólo en mi dispositivo y el simulador estaba trabajando bien. Terminé teniendo que resetear mi aparato y que el error fue.

15voto

sang Puntos 304

Estoy teniendo este problema muy a menudo últimamente. ¿Qué sería de evitar que esto ocurra? Salir de la sesión y se soluciona el problema, pero.. es molesto hacerlo cada tan a menudo.

EDICIÓN:

Acabo de encontrar la causa. Tuve un error en ApplicationWillTerminate método. Así que cuando yo haga clic en botón " stop " en Xcode ventana de la aplicación no podía terminar correctamente y comenzó a colgar.

el registro de Actividad de Vigilar para ver si su aplicación está en la lista. la fuerza de cierre si es posible.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X