https://manuais.iessanclemente.net/index.php?title=Depuraci%C3%B3n:_LogCat&feed=atom&action=historyDepuración: LogCat - Historial de revisiones2024-03-29T13:27:46ZHistorial de revisiones de esta página en el wikiMediaWiki 1.36.2https://manuais.iessanclemente.net/index.php?title=Depuraci%C3%B3n:_LogCat&diff=57154&oldid=prevAngelfg en 08:52 28 jul 20152015-07-28T08:52:23Z<p></p>
<p><b>Página nueva</b></p><div>==Introdución==<br />
*Unha das técnicas para realizar depuración e seguimento das aplicacións é a creación de logs (rexistros) en tempo de execución.<br />
*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.<br />
<br />
[[Image:Android_2014_U4_01_Depuracion_01.jpg|700px]]<br />
*A imaxe amosa un conxunto de mensaxes que teñen, entre outros, os seguintes campos.<br />
**Nivel de criticidade: tipo de mensaxe (Erro, Warning, INfo, Debug, etc)<br />
**PID: Código do proceso que produciu a mensaxe.<br />
**Tag: Etiqueta que axuda á identificación da mensaxe, moi útil para filtrar resultados.<br />
**Mensaxe<br />
<br />
<br />
*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()'''.<br />
*Cada un dos métodos recibe como parámetro a etiqueta (''tag'') e o texto da mensaxe.<br />
<br />
<br />
*Referencias:<br />
**A Clase Log: http://developer.android.com/reference/android/util/Log.html<br />
<br />
==Caso práctico==<br />
*Crear o seguinte proxecto: '''U4_01_Depuracion'''<br />
*Imos realizar un pequeno proxecto onde amosamos como poder usar o LOG.<br />
*A etiqueta que se está usando no programa é: "DEPURACIÓN"<br />
*E estamos usando un filtro para ver só as etiquetas con ese nome.<br />
*Para ver as mensaxes de log usaremos a ventá '''LogCat''' que está tanto na perspectiva Java como DDMS.<br />
<br />
<gallery caption="Depuración" widths="350" heights="300px" perrow="2"><br />
Image:Android_2014_U4_01_Depuracion_03.jpg|Lanzamos a aplicación <br />
Image:Android_2014_U4_01_Depuracion_02.jpg|E no LogCat amosa unha serie de mensaxes con distintos niveis de criticidade.<br>Estas foron creadas dentro do método onCreate().<br />
Image:Android_2014_U4_01_Depuracion_04.jpg|Escribimos un valor correcto<br />
Image:Android_2014_U4_01_Depuracion_05.jpg|E no LogCat vemos por anda a aplicación ...<br />
Image:Android_2014_U4_01_Depuracion_06.jpg|Escribimos un valor incorrecto<br />
Image:Android_2014_U4_01_Depuracion_07.jpg|E volvemos ver por onde anda a aplicación ...<br />
</gallery><br />
<br />
===O XML do Layout===<br />
*A continuación amósase o Layout da aplicación:<br />
<br />
<syntaxhighlight lang="xml" line enclose="div" highlight="13,19" ><br />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />
xmlns:tools="http://schemas.android.com/tools"<br />
android:layout_width="match_parent"<br />
android:layout_height="match_parent"<br />
android:orientation="vertical"<br />
tools:context="com.example.u4_01_depuracion.U4_01_Depuracion" ><br />
<br />
<EditText<br />
android:id="@+id/et"<br />
android:layout_width="wrap_content"<br />
android:layout_height="wrap_content"<br />
android:hint="Introduce o século no que vives"<br />
android:inputType="number" /><br />
<br />
<Button<br />
android:layout_width="wrap_content"<br />
android:layout_height="wrap_content"<br />
android:text="Preme aquí"<br />
android:onClick="onButtonClick" /><br />
<br />
</LinearLayout><br />
</syntaxhighlight><br />
<br />
<br />
<br />
===O código Java da aplicación===<br />
<br />
<br />
<syntaxhighlight lang="java" line enclose="div" highlight="18-22,38,42,48" ><br />
package com.example.u4_01_depuracion;<br />
<br />
import android.app.Activity;<br />
import android.os.Bundle;<br />
import android.util.Log;<br />
import android.view.Menu;<br />
import android.view.MenuItem;<br />
import android.view.View;<br />
import android.widget.EditText;<br />
import android.widget.Toast;<br />
<br />
public class U4_01_Depuracion extends Activity {<br />
<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_u4_01__depuracion);<br />
Log.e("DEPURACIÓN", "Mensaxe de erro");<br />
Log.w("DEPURACIÓN", "Mensaxe de aviso");<br />
Log.i("DEPURACIÓN", "Mensaxe de información");<br />
Log.d("DEPURACIÓN", "Mensaxe de mensaxe de depuración");<br />
Log.v("DEPURACIÓN", "Mensaxe de vervose");<br />
<br />
}<br />
<br />
@Override<br />
public boolean onCreateOptionsMenu(Menu menu) {<br />
// Inflate the menu; this adds items to the action bar if it is present.<br />
getMenuInflater().inflate(R.menu.u4_01__depuracion, menu);<br />
return true;<br />
}<br />
<br />
public void onButtonClick(View v) {<br />
EditText et = (EditText) findViewById(R.id.et);<br />
<br />
if (et.getText().toString().equals("21")) {<br />
Toast.makeText(this, "Tes os pes na terra ", Toast.LENGTH_SHORT).show();<br />
Log.i("DEPURACIÓN BOTÓN", "Dentro if");<br />
<br />
} else if (et.getText().toString().equals("")) {<br />
Toast.makeText(this, "Non escribiches nada", Toast.LENGTH_SHORT).show();<br />
Log.i("DEPURACIÓN BOTÓN", "Dentro else if");<br />
<br />
} else<br />
<br />
{<br />
Toast.makeText(this, "Estás noutro planeta", Toast.LENGTH_SHORT).show();<br />
Log.i("DEPURACIÓN BOTÓN", "Dentro else");<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
*'''Liñas 18-22''': A aplicación emite mensaxes a través dos métodos estáticos con distintos niveis de criticidade.<br />
**A etiqueta (tag) é o primeiro campo.<br />
*'''Liñas 38,42,48''': emisión de mensaxes que nos axudan a saber porque parte do código se atopa a aplicación.<br />
<br />
<br />
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).</div>Angelfg