jueves, 21 de noviembre de 2013

Como puedo usar el logcat para ayudarme al debug de mi aplicación?

Hola a todos, como están en este pequeño post, voy a tratar un tema que le trae problemas normalmente al que recién comienza a desarrollar con Android. El mismo es como utilizar los logs para poder realizar un debug y hasta para poder preguntar en foros y lista de correo. Ya que la mejor forma de que te ayuden a resolver tu problema es que les muestres una salida del logcat correcta y con bastante información de lo que le sucede a la aplicación en el momento del error o del funcionamiento inapropiado de la misma (ya que no siempre son errores :D )



Para poder hacer esto vamos a utilizar el logcat y la clase Log que nos provee el mismo SDK de Android, no digo que esta forma sea la mejor, pero creo que es una medianamente correcta y que les ayudara bastante si no saben utilizarlo, voy a poner un ejemplo de código:

Supongamos que tenemos una función llamada inputStreamToString donde realizamos un catch, y en muchos casos veo que para eso realizan algo similar a esto:

 catch (IOException e) {
        // e.printStackTrace();
        Toast.makeText(getApplicationContext(),
          "Error..." + e.toString(), Toast.LENGTH_LONG).show();
       }

En vez de eso, lo correcto podría ser utilizar el logcat así:

catch (IOException e) {
    Log.e(TAG, "Error inputStreamToString " + e);  
}

Deben notar que utilizó Log.e, eso es porque se trata de un error, para debug podría ser Log.d, u otro tipo de salida, esto es útil para que el logcat te coloree de forma diferentes la salida, y sea más fácil poder seguirlo ;)

Dónde TAG debe ser un string, si ven el código fuente de Android normalmente este contiene la string del nombre de la clase, por ejemplo:

private static final String TAG = "Activity";


Para más referencias, la documentación oficial:

Esa forma de usarlo es buena para ver el logcat y saber de donde vienen los errores o filtrar por clases a los logs ;)

Ahora lo que deberían hacer, es usar logs en su código fuente :D por ejemplo: Log.d(TAG, "Datos que caen al listview " + datos); otro ejemplo Log.d(TAG, "Datos que tomo del webservice " + datos);

En resumen, el logcat no es solamente para ver errores, sino para saber qué datos toma del medio que sea, pasa tu aplicación de un lado a otro, o para ver cualquier información que creas que te resulte necesaria para entender qué le sucede a tu aplicación y así poder corregir tu código.

Este post a sido corto, más que nada es un tip para que les resulte más sencillo encontrar y así poder corregir los errores en sus aplicaciones, además de poder consultarles a otras personas y que están puedan ayudarlos. Espero que les allá sido de utilidad.

Saludos, Gabriel