Está en la página 1de 9

Depuración

La depuración es la fase consistente en buscar y corregir los bugs. Para ayudar al desarrollador en
esta tarea, Eclipse, el plug-in ADT y el SDK Android ponen a disposición del desarrollador un conjunto
de herramientas que vamos a descubrir en las siguientes secciones.

1. Depuración paso a paso


La depuración paso a paso no es específica de Android. Este modo está disponible en todos los
programas Java en Eclipse. Utiliza una herramienta llamada depurador que ejecuta el programa en un
modo concreto. El desarrollador tiene, entonces, acceso a numerosas funcionalidades que le permiten
establecer puntos de ruptura en el código fuente, analizar paso a paso el desarrollo del programa y
conocer, entre otros, la pila de llamadas de los métodos y los valores de las variables.

Supondremos que se maneja bien el uso de este modo de depuración en Eclipse dado que no es algo
específico de la plataforma Android sino del desarrollo en Java.

Hasta la versión 9 de las Android SDK tools (herramientas del SDK Android), para permitir este tipo de
depuración, una aplicación Android necesitaba poner obligatoriamente a true el
atributo android:debuggable de la etiqueta application del manifiesto, que por defecto
valía false. Sin ello, la ejecución en modo de depuración no tenía efecto alguno.
Ejemplo

<?xml version="1.0" encoding="utf-8"?>


<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="es.midominio.android.miaplicacion"
android:versionCode="1"
android:versionName="1.0">
<application android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name">
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>

Desde la versión 9 de las herramientas del SDK, el desarrollador ya no necesita agregar este atributo
para posicionarlo a tr ue. En Eclipse y el plug-in ADT, esto se realiza automáticamente mediante
compilaciones incrementales que se consideran, por defecto, compilaciones de debug. No es sino una
exportación de una compilación firmada en modo release que no tendrá este atributo.

Esta funcionalidad está, de hecho, incluida en la versión 8, pero un bug impide que funcione
correctamente. Este bug ha sido corregido en la versión 9.

Se recuerda que el desarrollador siempre debe utilizar la versión más reciente de las
herramientas del SDK.

2. DDMS
El plug-in ADT proporciona una perspectiva Eclipse dedicada especialmente a la depuración de la
aplicación Android: la perspectiva DDMS (Dalvik Debug Monitor Server). Ésta utiliza de forma interna la
herramienta del mismo nombre: dd ms. Esta herramienta ofrece bastantes funcionalidades. Vamos a
ver las principales, que se acceden desde la perspectiva Eclipse.
Observe que si se ejecuta desde una línea de comandos, esta herramienta ofrece todavía más
funcionalidades avanzadas.

Si la perspectiva DDMS no está visible en la parte superior de la ventana general de Eclipse,


haga clic en el botón » para mostrarla.

Haga clic en el botón DDMS para mostrar la perspectiva.


La perspectiva DDMS contiene varias vistas nuevas: Devices, Emulator
Control, Threads, Heap,Allocation Tracker y File Explorer que vamos a descubrir con detalle más
adelante.

a. Vista Devices

La vista Devices, situada por defecto en la parte superior izquierda, proporciona la lista de
emuladores y dispositivos conectados y, para cada uno de ellos, la lista de ciertos procesos
existentes identificados por el nombre del paquete de la aplicación que los alberga. A continuación
se indica, en las columnas de la derecha, el identificador del proceso y el puerto de conexión para el
depurador.
La selección de un proceso de la lista activa los botones situados en la parte superior derecha
correspondientes a las funcionalidades siguientes, descritas de izquierda a derecha:

Debug the selected process: pone la aplicación en modo debug. Requiere que el proyecto
correspondiente esté abierto en el espacio de trabajo de Eclipse.

Update Heap: activa las actualizaciones de la información de ejecución de la aplicación. Esta


información se indica en la vista Heap descrita más adelante.

Dump HPROF file: recupera un archivo con formato HPROF. Este archivo es una imagen de
la memoria de la máquina virtual. Permite, en concreto, buscar las fugas de memoria
estudiándola con las herramientas especializadas como Mat, jmap, jhat.

Cause GC: fuerza la ejecución del Garbage Collector (recolector de basura).

Update Threads: activa la actualización de la información acerca de los threads de la


aplicación. Esta información está indicada en la vista Threads descrita más adelante.

Start Method Profiling: el primer clic inicia el registro de información asociada a la ejecución
de los métodos. El segundo clic detiene el registro y muestra los resultados en una ventana
dedicada.

Stop Process: destruye el proceso y, por tanto, la máquina virtual, seleccionado.

Screen Capture: abre una nueva ventana Device Screen Capture que permite realizar
capturas de pantalla de la aplicación seleccionada y salvaguardarlas. Un clic sobre el
botónRefresh permite actualizar la copia de pantalla.
Todavía en la vista Devices, en el extremo derecho de las funcionalidades descritas
anteriormente, aparece una flecha verde orientada hacia abajo. Un clic sobre esta flecha
permite descubrir otra funcionalidad indicada debajo de la lista: Reset adb. Esto permite reiniciar
la herramienta adb utilizada por la herramienta d dms para conectarse al emulador o al
dispositivo Android si la situación exige tener que reiniciar el emulador/dispositivo y/o Eclipse.

b. Vista Emulator Control

La vista Emulator Control, situada a la izquierda, debajo de la vista Devices, permite simular el
estado de la red telefónica, las llamadas telefónicas, el envío de SMS y las coordenadas geográficas
en distintos formatos: manual, GPX (GPS Exchange Format) y KML (Keyhole Markup Language).

Las coordenadas geográficas emuladas se reciben como provenientes exclusivamente del sistema
GPS del dispositivo emulado. No es posible emular posiciones que provengan de la red de telefonía
móvil o de redes Wi-Fi. El permiso correspondiente al sistema GPS debe, por tanto, figurar en la
aplicación (véase el capítulo Sensores y geolocalización - Localización geográfica).

Observe la presencia de un bug en las versiones 2.3.x del emulador que provoca un crash en
el emulador cuando se le proporciona una posición GPS. Para más información, consulte la
siguiente página: http://code.google.com/p/android/issues/detail?id=13015

c. Vista Threads
La vista Threads, como las siguientes vistas, está situada en la parte derecha.

Para activar esta vista, seleccione una aplicación en la vista Devices y haga clic en el
botónUpdate threads.

En la parte superior figura, de izquierda a derecha: un identificador único (ID) del thread atribuido
por la máquina virtual, el identificador Linux del thread, el estado del thread, el tiempo acumulador
hasta ejecutar el código de usuario, en unidades de 10 ms, y el nombre del thread.

En la parte inferior figura la pila de llamadas de los métodos del thread seleccionado en la parte
superior.

d. Vista Heap
Situada a la derecha de la vista Threads, la vista Heap debe estar activa para recibir información.

Para ello, seleccione una aplicación en la vista Devices y haga clic en el botón Update Heap

Aparece una indicación mientras que la vista nos informa de que el refresco de la información tendrá
lugar tras cada ejecución del recolector de basura. Un clic sobre el botón Cause GC permite forzar
manualmente la ejecución del recolector de basura y, por tanto, refrescar la información.

En la parte superior figura la información general asociada a la memoria: el tamaño total, el tamaño
alojado, el tamaño libre, la proporción de memoria utilizada y el número de objetos alojados.

En la parte central se muestra información y datos estadísticos repartidos en diversas categorías.

En la parte inferior se dibuja un gráfico que representa el número de emplazamientos por tamaño.
Si se hace clic con el botón derecho es posible modificar las propiedades, salvaguardar los datos, o
imprimirlos.

e. Vista Allocation Tracker


Situada a la de recha de la vista Heap, la vista Allocation Tracker proporciona información sobre los
elementos alojados en memoria.

Para ello, seleccione una aplicación en la vista Devices y, a continuación, haga clic sobre el
botón Start Tracking de la vista Allocation Tracker.

Comienza entonces la recolección de datos sobre el consumo de memoria. Cada clic en el botónGet
Allocations refresca los datos de la ventana.

Los datos proporcionan información sobre las reservas de memoria realizadas desde el inicio de la
colecta. Haciendo clic en el botón Stop Tracking se detiene la recolección de datos.

Es posible ordenar las filas de la tabla haciendo clic sobre el título de la columna.

f. Vista File Explorer

Situada en la parte derecha de la vista Allocation Tracker, la vista File Explorer es un explorador
del sistema de archivos del emulador o del dispositivo Android.
Es posible transferir archivos desde o hacia el sistema Android y suprimir archivos en el sistema
Android haciendo clic en los respectivos iconos situados en la parte superior derecha.

También podría gustarte