Depurar con mensajes Log

El sistema Android utiliza el fichero LogCat para registrar todos los problemas y eventos principales que ocurren en el sistema. Ante cualquier error resulta muy interesante consultarlo para tratar de encontrar su origen.

La clase Log proporciona un mecanismo para introducir mensajes desde nuestro código en este fichero. Puede ser muy útil para depurar nuestros programas o para verificar el funcionamiento del código. Disponemos de varios métodos para generar distintos tipos de mensajes:

Log.e(): Errors
Log.w(): Warnings
Log.i(): Information
Log.d(): Debugging
Log.v(): Verbose 

Ejercicio paso a paso: Depurar con mensajes Log

1.   Modifica la clase MainActivity introduciendo la línea que aparece en subrayada:

@Override
public void onCreate(Bundle savedInstanceState) {
   Log.d("HolaMundo","Entramos en onCreate");
   super.onCreate(savedInstanceState);
   Object o = null;
   o.toString();
   setContentView(R.layout.activity_main);
} 
lateinit var o: Any

override fun onCreate(savedInstanceState: Bundle?) {
   Log.d("HolaMundo","Entramos en onCreate");
   super.onCreate(savedInstanceState)
   o.toString()
   setContentView(R.layout.activity_main)
} 

 Nota sobre Java/Kotlin: Para poder utilizar la clase  Log  has de importar un nuevo paquete. Para ello añade al principio  import  android.util.Log; Otra alternativa es pulsar Alt-Intro  para que se añadan automáticamente los paquetes que faltan. En algunos casos, el sistema puede encontrar dos paquetes con la clase Log, y puede tener dudas sobre cual importar. En estos casos te preguntará.

2.    Ejecuta la aplicación. Aparecerá un error.
3.    En Android Studio aparecerá automáticamente en la parte inferior:

En la primera línea de la captura anterior, comprobamos que se pudo entrar dentro de onCreate(). Dos líneas más abajo se indica una excepción. La información mostrada suele ser excesiva. Te recomendamos que busques las palabras “Caused by” para ver el tipo de excepción y la primera referencia a un paquete escrito por nosotros, “com.example.jtomas.myapplication”. En este ejemplo, las  líneas clave son: en JavaCased by: java.lang.NullPointerException at conm.example.jtomas.myapplication.MainActivity.onCreate(MainActivity.java:17)”. )”. En Kotlin “Caused by: kotlin.UninitializedPropertyAccessException: lateinit property o has not been initialized at com.example.myapplication.MainActivity.onCreate (MainActivity.kt:14)”
 

4.     Haz clic en (MainActivity.java:17) o (MainActivity.kt:14). Te abrirá la actividad MainActivity y te situará en la línea donde se ha producido el error.

video[TutorialLogCat con Android Studio