Depuración: LogCat

De Manuais Informática - IES San Clemente.
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.

Android 2014 U4 01 Depuracion 01.jpg

  • A imaxe amosa un conxunto de mensaxes que teñen, entre outros, os seguintes campos.
    • Nivel de criticidade: tipo de mensaxe (Erro, Warning, INfo, Debug, etc)
    • PID: Código do proceso que produciu a mensaxe.
    • Tag: Etiqueta que axuda á identificación da mensaxe, moi útil para filtrar resultados.
    • Mensaxe


  • 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: U4_01_Depuracion
  • Imos realizar un pequeno proxecto onde amosamos como poder usar o LOG.
  • A etiqueta que se está usando no programa é: "DEPURACIÓN"
  • E estamos usando un filtro para ver só as etiquetas con ese nome.
  • Para ver as mensaxes de log usaremos a ventá LogCat que está tanto na perspectiva Java como DDMS.

O XML do Layout

  • A continuación amósase o Layout da aplicación:
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.example.u4_01_depuracion.U4_01_Depuracion" >
 7 
 8     <EditText
 9         android:id="@+id/et"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:hint="Introduce o século no que vives"
13         android:inputType="number" />
14 
15     <Button
16         android:layout_width="wrap_content"
17         android:layout_height="wrap_content"
18         android:text="Preme aquí"
19         android:onClick="onButtonClick" />
20 
21 </LinearLayout>


O código Java da aplicación

 1 package com.example.u4_01_depuracion;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 import android.view.Menu;
 7 import android.view.MenuItem;
 8 import android.view.View;
 9 import android.widget.EditText;
10 import android.widget.Toast;
11 
12 public class U4_01_Depuracion extends Activity {
13 
14 	@Override
15 	protected void onCreate(Bundle savedInstanceState) {
16 		super.onCreate(savedInstanceState);
17 		setContentView(R.layout.activity_u4_01__depuracion);
18 		Log.e("DEPURACIÓN", "Mensaxe de erro");
19 		Log.w("DEPURACIÓN", "Mensaxe de aviso");
20 		Log.i("DEPURACIÓN", "Mensaxe de información");
21 		Log.d("DEPURACIÓN", "Mensaxe de mensaxe de depuración");
22 		Log.v("DEPURACIÓN", "Mensaxe de vervose");
23 
24 	}
25 
26 	@Override
27 	public boolean onCreateOptionsMenu(Menu menu) {
28 		// Inflate the menu; this adds items to the action bar if it is present.
29 		getMenuInflater().inflate(R.menu.u4_01__depuracion, menu);
30 		return true;
31 	}
32 
33 	public void onButtonClick(View v) {
34 		EditText et = (EditText) findViewById(R.id.et);
35 
36 		if (et.getText().toString().equals("21")) {
37 			Toast.makeText(this, "Tes os pes na terra ", Toast.LENGTH_SHORT).show();
38 			Log.i("DEPURACIÓN BOTÓN", "Dentro if");
39 
40 		} else if (et.getText().toString().equals("")) {
41 			Toast.makeText(this, "Non escribiches nada", Toast.LENGTH_SHORT).show();
42 			Log.i("DEPURACIÓN BOTÓN", "Dentro else if");
43 
44 		} else
45 
46 		{
47 			Toast.makeText(this, "Estás noutro planeta", Toast.LENGTH_SHORT).show();
48 			Log.i("DEPURACIÓN BOTÓN", "Dentro else");
49 
50 		}
51 
52 	}
53 
54 }
  • Liñas 18-22: 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 38,42,48: 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 -- (2015).