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

4

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

Uno de los problemas con el juego fue que el juego se congela por completo. Para ayudar en la depuración, utilicé el Time Profiler de Xcode Instruments y lo conecté al juego. Cuando se congeló, pude ver qué estaba gastando exactamente el tiempo del procesador y se lo he informado al desarrollador.

Sin embargo, el otro problema con el juego es una falla en el escritorio. Normalmente, cuando las aplicaciones (como Xcode) se bloquean por completo, OS X me dará un informe de error que incluirá información útil, como el seguimiento de la pila. Sin embargo, cuando este juego falla, no consigo nada. Simplemente desaparece por completo. El proceso ya no está en la lista Forzar salida, pero tampoco obtengo ningún informe de bloqueo.

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

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

    
pregunta nhgrif 09.12.2014 - 23:56

1 respuesta

1

Una forma posible se estaría ejecutando:

sudo dtruss -n <app_executable>

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

Por ejemplo, si desea depurar iTunes, primero debe averiguar 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 puedes hacerlo haciendo clic con el botón derecho en una aplicación en el Finder y seleccionando Mostrar contenido del paquete .

Una vez que hayas descubierto que es iTunes , puedes usar 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 bloqueo.

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.

    
respondido por el ccpizza 10.04.2017 - 21:09

Lea otras preguntas en las etiquetas