5 votos

¿Cómo puedo depurar una aplicación que se bloquea en OS X?

Tengo un juego instalado desde Steam en mi Mac (Crusader Kings II). El parche más reciente del desarrollador ha tenido cuelgues y congelaciones en mi Mac, y me gustaría ayudar a dar al desarrollador toda la información de depuración posible (yo también soy desarrollador de iOS).

Uno de los problemas del juego consistía en que el juego se congelaba por completo. Para ayudar a la depuración, utilicé el Time Profiler de Xcode Instruments y lo adjunté al juego. Cuando se congeló, pude ver qué era exactamente lo que estaba usando el tiempo del procesador, y he informado de ello al desarrollador.

Sin embargo, el otro problema del juego es que se bloquea con fuerza en el escritorio. Normalmente, cuando las aplicaciones (como Xcode) se bloquean por completo, OS X me da un informe de error que incluye información útil, como el seguimiento de la pila. Sin embargo, cuando este juego se bloquea, no obtengo nada. Simplemente desaparece por completo. El proceso ya no está en la lista de Force Quit, pero tampoco obtengo ningún informe de fallo.

¿Hay alguna manera, utilizando Xcode Instruments, o cualquier otro medio, de determinar exactamente en qué estado se encuentra la aplicación en el instante justo antes de que se cuelgue?

Mi ordenador es un Mac Mini (modelo de finales de 2012) y estoy en OS X 10.10.1 si eso importa.

5voto

Richard Marquez Puntos 387

Una forma posible sería correr:

sudo dtruss -n <app_executable>

donde <app_executable> es el nombre del archivo ejecutable del paquete de aplicaciones en el Contents\MacOS dentro de la aplicación.

Por ejemplo, si quisieras depurar iTunes, primero averiguarías el nombre del ejecutable:

ls -alh /Applications/iTunes.app/Contents/MacOS/

drwxr-xr-x  5 root wheel 170 Mar 30 21:01 .
drwxr-xr-x 11 root wheel 374 Mar 30 21:01 ..
drwxr-xr-x  3 root wheel 102 Mar 30 21:02 iTunesHelper.app
-rwxr-xr-x  1 root wheel 29M Mar 29 02:01 iTunes <<<<<<<< this one
-rwxr-xr-x  1 root wheel 18K Mar 29 02:00 iTunesASUHelper

También puede hacerlo haciendo clic con el botón derecho en una aplicación del Finder y seleccionando Mostrar el contenido del paquete .

Una vez que te has dado cuenta de que es iTunes puede utilizar el siguiente comando:

sudo dtruss -n iTunes

Esto mostrará mucha información de bajo nivel, pero podría contener algo útil para identificar la causa de un accidente.

Otras utilidades incorporadas potencialmente útiles son: iosnoop , iotop , opensnoop , execsnoop , opensnoop que se basan en dtrace que también se puede utilizar por sí solo. Todos ellos tienen páginas man para que puedas usar, por ejemplo man iosnoop en un terminal para conocer los detalles de su uso. Todos ellos requieren sudo .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X