Depuración: LogCat

De MediaWiki
Ir a la navegación Ir a la búsqueda

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