Ver Mensaje Individual
  #1  
Viejo 11/01/11, 16:36:03
Avatar de intronauta
intronauta intronauta no está en línea
Monguer.
Mensajes: 5,345
Compra y venta: (1)
 
Fecha de registro: ago 2009
Mensajes: 5,345
Tu operador: Pepephone
Mencionado: 1019 comentarios
Tagged: 4 hilos
Herramientas de depuración del sistema, TOP, LOGCAT, DMESG, DDMS, OSMONITOR

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


Código:
adb shell top
Código:
adb 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.
Código:
top -s cpu -m xx
Con 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.
top.png

¿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.


Código:
#killall -9 proceso
Con 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

Código:
adb logcat
Código:
adb 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
rootexplorer.jpg


Aquí vemos un fallo al actualizar dropbox desde Titanium
logcat_Titanium.jpg
*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
Código:
# logcat *:E
Mostrar solo notificaciones relacionadas con Titanium.
Código:
# logcat | grep Titanium
Mostrar solo información de radio/telefonía
Código:
#logcat -b radio
Código:
adb logcat >logcat.txt
Esto 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/d...tools/adb.html


DMESG

Código:
adb shell dmesg
Código:
adb 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...


Código:
adb shell dmesg >dmesg.txt
Volcar 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/d...ools/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, ....





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.

Última edición por intronauta Día 11/01/11 a las 17:00:10
Responder Con Cita
Los siguientes 23 usuarios han agradecido a intronauta su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]