Depuración: LogCat

De MediaWiki
Saltar a: navegación, buscar

Introdución


  • Unha das técnicas para realizar depuración e seguimento das aplicacións é a creación de logs (rexistros) en tempo de execución.
  • En Android úsase a clase Log, que posúe un conxunto de métodos estáticos que nos van axudar no proceso de depuración/seguimento.

PDM Debugger 1.jpg



  • A imaxe amosa un conxunto de mensaxes. Os campos que conforman a mensaxe se poden escoller como se amosa na seguinte imaxe:

PDM Debugger 1b.jpg

  • As mensaxes poden ter diferente cor en función do nivel de gravidade, así estarán en vermello os que sexan de tipo Error.
    • Nivel de criticidade: tipo de mensaxe (Erro, Warning, Info, Debug, etc)


  • Para cada nivel de criticidade existe un método estático que nós axuda a clasificar as mensaxes que pode producir a aplicación: e(), w(), i(), d() e v().
  • Cada un dos métodos recibe como parámetro a etiqueta (tag) e o texto da mensaxe.


Caso práctico

  • Crear o seguinte proxecto: Depuracion
Unha activity de nome 'Practica_1'


  • Imos realizar un pequeno proxecto onde amosamos como poder usar o LOG.
  • A etiqueta (tag) que se está usando no programa é: "DEPURACIÓN"
  • Para ver as mensaxes de log usaremos a ventá LogCat.




O XML do Layout

  • A continuación amósase o Layout da aplicación:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.    xmlns:app="http://schemas.android.com/apk/res-auto"
  4.    xmlns:tools="http://schemas.android.com/tools"
  5.    android:layout_width="match_parent"
  6.    android:layout_height="match_parent"
  7.    tools:context=".Practica_1">
  8.  
  9.     <EditText
  10.        android:id="@+id/edtSeculo"
  11.        android:layout_width="wrap_content"
  12.        android:layout_height="wrap_content"
  13.        android:layout_marginStart="8dp"
  14.        android:layout_marginTop="8dp"
  15.        android:ems="10"
  16.        android:inputType="textPersonName"
  17.        app:layout_constraintStart_toStartOf="parent"
  18.        app:layout_constraintTop_toTopOf="parent"
  19.        tools:text="Introduce o século onde vives" />
  20.  
  21.     <Button
  22.        android:id="@+id/btnPremer"
  23.        android:layout_width="wrap_content"
  24.        android:layout_height="wrap_content"
  25.        android:layout_marginStart="8dp"
  26.        android:layout_marginTop="8dp"
  27.        android:text="Preme aquí"
  28.        app:layout_constraintStart_toStartOf="parent"
  29.        app:layout_constraintTop_toBottomOf="@+id/edtSeculo"
  30.        android:onClick="onButtonClick"
  31.        />
  32. </android.support.constraint.ConstraintLayout>




O código Java da aplicación

  1. package es.cifprodofloucha.angel.depuracion.depuracion;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import android.view.View;
  7. import android.widget.EditText;
  8. import android.widget.Toast;
  9.  
  10. public class Practica_1 extends Activity {
  11.  
  12.     public void onButtonClick(View v) {
  13.         EditText et = (EditText) findViewById(R.id.edtSeculo);
  14.  
  15.         if (et.getText().toString().equals("21")) {
  16.             Toast.makeText(this, "Tes os pes na terra ", Toast.LENGTH_SHORT).show();
  17.             Log.i("DEPURACIÓN BOTÓN", "Dentro if");
  18.  
  19.         } else if (et.getText().toString().equals("")) {
  20.             Toast.makeText(this, "Non escribiches nada", Toast.LENGTH_SHORT).show();
  21.             Log.i("DEPURACIÓN BOTÓN", "Dentro else if");
  22.  
  23.         } else
  24.  
  25.         {
  26.             Toast.makeText(this, "Estás noutro planeta", Toast.LENGTH_SHORT).show();
  27.             Log.i("DEPURACIÓN BOTÓN", "Dentro else");
  28.  
  29.         }
  30.  
  31.     }
  32.  
  33.     @Override
  34.     protected void onCreate(Bundle savedInstanceState) {
  35.         super.onCreate(savedInstanceState);
  36.         setContentView(R.layout.activity_practica_1);
  37.  
  38.         Log.e("DEPURACIÓN", "Mensaxe de erro");
  39.         Log.w("DEPURACIÓN", "Mensaxe de aviso");
  40.         Log.i("DEPURACIÓN", "Mensaxe de información");
  41.         Log.d("DEPURACIÓN", "Mensaxe de mensaxe de depuración");
  42.         Log.v("DEPURACIÓN", "Mensaxe de vervose");
  43.  
  44.     }
  45. }
  • Liñas 38-42: A aplicación emite mensaxes a través dos métodos estáticos con distintos niveis de criticidade.
    • A etiqueta (tag) é o primeiro campo.
  • Liñas 17,21,27: emisión de mensaxes que nos axudan a saber porque parte do código se atopa a aplicación.






-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2018).