PDA

Ver la Versión Completa : [ TUTORIAL ] Herramientas de depuración del sistema, TOP, LOGCAT, DMESG, DDMS, OSMONITOR


intronauta
11/01/11, 16:36:03
Estas son algunas herramientas que nos pueden ayudar a conocer más como funciona nuestro sistema y cómo se comporta.

Pueden parecer poco transparentes e incluso confusas si no tienes grandes conocimientos, pero si les dedicas un tiempo a familiarizarte verás que pueden ser muy útiles y evitarte el divagar o especular por ejemplo sobre por qué la batería se consume rápidamente sin venir a cuento identificando quién es el responsable, al igual que saber por qué ciertas aplicaciones dan cierres forzados.

TOP

adb shell topadb shell
/ #top[control+c para cerrar]


top es un monitor de sistema incluido en los sistemas basados en unix y nos muestra una tabla con información detallada de los procesos.
Lo primero que debemos hacer es adaptar esa salida de datos al tamaño de nuestra ventana, ya que solo vemos una parte. top -s cpu -m xxCon el atributo -s cpu le decimos que muestre la información en orden descendente en función de la carga de cpu
Con -m xx le decimos el número de filas que mostrará, sustituyendo xx por 30 o 35 es más que suficiente.
48810

¿qué nos interesa?

En la cabecera: User %, System % nos dice el % de cpu que utilizan las aplicaciones distinguiendo entre procesos del usuario y de sistema, siendo la suma de los dos el % de uso total de cpu.

Columna PID ->identificador numérico único para cada proceso
Columna CPU% -> muestra la carga de cpu usada por ese proceso
Columnas S y PSY ->nos dice en que estado se encuentra: run, sleep, idle, background, foreground
Columna UID -> identifica quién ha lanzado el proceso. En general verás que la mayoría son del propio sistema (root), aunque también verás system, radio, app_xx,. etc.
Columna Name ->nombre del proceso


El resto de columnas solo son útiles para depuraciones avanzadas, uso de memoria virtual, hilos,....

top es ideal para monitorizar como se comportan los diferentes procesos/aplicaciones lanzados en el sistema especialmente cuando está en reposo. No hay más que dejar el móvil en reposo unos minutos y observar como empiezan a lanzarse aleatoriamente varios procesos. Algunos son razonables y necesarios para mantener "vivo" el sistema, pero es fácil ver por ejemplo como algunos widgets aparentemente inofensivos se activan con demasiada frecuencia haciendo uso de cpu, lo que afecta al consumo de la batería.


#killall -9 procesoCon este comando podemos matar un proceso, sustituyendo "proceso" por su el nombre de la columna "Name". Útil para hacer pruebas sin tener que "despertar" el sistema y seguir observando el comportamiento.



LOGCAT

adb logcatadb shell
/#logcat[control+c para cerrar]

logcat es un visor con mensajes de depuración donde el sistema informa de infinidad de sucesos, muy útil para identificar qué errores se producen en el sistema o de qué forma funcionan. Logcat requiere familiarizarse con su formato y sintaxis. Mucha información no te portará nada si no tienes conocimientos avanzados en código android pero es fácil identificar ciertos fallos como si un proceso no encuentra un archivo, fallos con permisos, servidores remotos que no responden, etc.

Ejemplos: Aquí se ejecuta root explorer la primera vez después de un arranque del sistema y obtienen permisos root
48813


Aquí vemos un fallo al actualizar dropbox desde Titanium
48814*solo como ejemplo de como se reporta un fallo, aunque este en especial no nos dice mucho sobre cual es el problema. Hay otro más claros.


Fíjate que al comienzo de cada notificación hay una etiqueta que te informa del tipo de información que ofrece :



V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)



Si queremos centrarnos en el comportamiento de una parte del sistema determinada, proceso o aplicación, podemos filtrar la salida de datos:Mostrar solo notificaciones de error
# logcat *:EMostrar solo notificaciones relacionadas con Titanium.
# logcat | grep TitaniumMostrar solo información de radio/telefonía
#logcat -b radioadb logcat >logcat.txtEsto es muy útil después de un inicio completo para ver qué ha ocurrido durante el arranque, casi indispensable después de flashear una rom, kernel o demás. Lo que hacemos es volcar la salida de datos de logcat a un archivo de texto en nuestro ordenador para verlo más cómodamente desde cualquier editor.


Más info: http://developer.android.com/guide/developing/tools/adb.html


DMESG

adb shell dmesgadb shell
#dmesg

dmesg nos muestra los mensajes de diagnóstico emitidos por el kernel. Aquí verás si existen errores o conflictos con drivers, módulos, etc...


adb shell dmesg >dmesg.txtVolcar la salida de datos de dmesg a un archivo de texto para verlo más cómodamente desde un editor en nuestro ordenador.


DALVIK_DEBUG_MONITOR

En el SDK de android viene incluido una herramienta de depuración muy útil con el que puedes obtener mucha de esta información aparte de extras como hacer capturas de pantalla.

Tienes el ejecutable en /tools/ddms dentro del SDK.

Más info: http://developer.android.com/guide/developing/tools/ddms.html



OSMONITOR

Bueno, esta es una aplicación disponible en el market que me encanta y que es útil cuando no disponemos de ordenador y queremos comprobar que todo funciona como debería.

Incluye task manager, top, logcat general o filtrando por aplicación, dmesg, información de las interfaces de red con contador de tráfico de datos, conexiones TCP activas y en que estado se encuentran, frecuencia de CPU y governor en tiempo real configurable en kernels sin perflock (que permitan OC, pero es muy básica), info completa de la batería, espacio libre en el sistema, ....

http://chart.apis.google.com/chart?cht=qr&chs=135x135&chl=market%3a%2f%2fdetails%3fid%3dcom.eolwral.osmo nitor%26referrer%3dutm_source%253DAndrolib%2526utm _medium%253DPage%2526utm_campaign%253DAndrolib%252 0Page

http://es.androlib.com/appscreenmax/zBxz.u.cs.png

Recomiendo esta configuración extra:


activar modo root
esconder procesos de sistema marcado
ordenar por "carga"
ocultar área extra


Vista de log:


elige si quieres ver el logcat o dmesg en la pestaña " "Mensaje"



En la pestaña procesos:


verás que el uso de CPU es elevado porque el propio Osmonitor consume recursos.
Si pulsas en el lado derecho despliegas información extra
Si mantienes pulsado puedes matarlo o "ver Log" que viene a ser el equivalente de ver toda la info que esa aplicación a volcado a logcat.


Posiblemente existan aplicaciones equivalentes pero por ahora creo que esta es la más completa.

ninox
11/01/11, 16:41:07
Qué crack estas echo! :ok:

Habrá que indagar un poco en el tema y aprender algo jeje :pensando:

Muchas gracias!

jorge9s
11/01/11, 17:01:21
Es interesante, tocara leer, leer, y leer para poder aprender jejeje

vvaleta
12/01/11, 07:36:18
Intronauta como siempre :aplausos: pal hilo de tutos.

sepuke
12/01/11, 08:47:32
interesante tio, muchas gracias..

bomberillo
12/01/11, 12:17:54
Simplemente te aplaudo, la verdad que a todos y desde aqui aprobecho para agradeceros cuanto estoy aprendiendo con vuestra sabiduria. De verdad, Gracias. :aplausos::aplausos::aplausos::aplausos:

panben
19/02/11, 12:04:22
a ver si sabeis como puedo resolver mi problemilla,
quiero ver los logs porque se me reinicia el telefono,
pero cuando voy a verlos despues de que se haya reiniciado, solo puedo ver los logs posteriores al arranque del telefono, los justo anteriores al reinicio no consigo verlos, no se si es que se borran al reiniciar o que, ¿alguien sabe como solucionarlo?

intronauta
19/02/11, 13:46:44
a ver si sabeis como puedo resolver mi problemilla,
quiero ver los logs porque se me reinicia el telefono,
pero cuando voy a verlos despues de que se haya reiniciado, solo puedo ver los logs posteriores al arranque del telefono, los justo anteriores al reinicio no consigo verlos, no se si es que se borran al reiniciar o que, ¿alguien sabe como solucionarlo?


Es una limitación incomprensible. Dependiendo del kernel y de cómo tenga implementado el modo depuración puede generarse un "last_kmsg" referente al último log del kernel, pero no disponemos de él (por hora solo los kernel cyanogenmod lo utilizan :/)

¿se te reinicia haciendo algo en especial? es reproducible? sospechas de algo?

Si puedes reproducirlo podrías hacer un logcat con volcado a un archivo en tiempo real.

Conectas por usb:
adb logcat >logcat.log

y esperar.


Podrías probar desde android con un terminal tipo better terminal:

cd sdcard
logcat>logcat.log


y dejarlo activo en primer (preferible) o segundo plano hasta que se reinicie. El problema es que a lo mejor el sistema mata la aplicación si entiende que no está en uso. Eso tendrías que verlo.