Diferencia entre revisiones de «Depuración: LogCat»
Ir a la navegación
Ir a la búsqueda
| Línea 27: | Línea 27: | ||
==Caso práctico== | ==Caso práctico== | ||
| − | *Crear o seguinte proxecto: ''' | + | *Crear o seguinte proxecto: '''Depuracion''' |
| + | : Unha activity de nome 'Practica_1' | ||
| + | |||
| + | |||
*Imos realizar un pequeno proxecto onde amosamos como poder usar o LOG. | *Imos realizar un pequeno proxecto onde amosamos como poder usar o LOG. | ||
| − | *A etiqueta que se está usando no programa é: "DEPURACIÓN" | + | *A etiqueta ('''tag''') que se está usando no programa é: "DEPURACIÓN" |
| − | + | ||
| − | *Para ver as mensaxes de log usaremos a ventá '''LogCat''' | + | *Para ver as mensaxes de log usaremos a ventá '''LogCat'''. |
<gallery caption="Depuración" widths="350" heights="300px" perrow="2"> | <gallery caption="Depuración" widths="350" heights="300px" perrow="2"> | ||
| − | Image: | + | Image:PDM_Debugger_2.jpg| Ao iniciar a aplicación (o código está posto a continuación) aparecerán mensaxes cos diferentes niveis de criticidade.<br>Estas foron creadas dentro do método onCreate(). |
| − | + | Image:PDM_Debugger_3.jpg| Escribimos un valor correcto na aplicación. | |
| − | Image: | + | PDM_Debugger_4.jpg| No logcat podemos buscar por parte do texto da mensaxe, polo que buscamos polo tag. Vemos por anda a aplicación ... |
| − | + | PDM_Debugger_5.jpg| Escribimos un valor incorrecto | |
| − | + | PDM_Debugger_6.jpg| E volvemos ver por onde anda a aplicación... | |
| − | |||
</gallery> | </gallery> | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
===O XML do Layout=== | ===O XML do Layout=== | ||
*A continuación amósase o Layout da aplicación: | *A continuación amósase o Layout da aplicación: | ||
| − | <syntaxhighlight lang="xml" line enclose="div" highlight=" | + | <syntaxhighlight lang="xml" line enclose="div" highlight="10,22,30" > |
| − | < | + | <?xml version="1.0" encoding="utf-8"?> |
| + | <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| + | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
xmlns:tools="http://schemas.android.com/tools" | xmlns:tools="http://schemas.android.com/tools" | ||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||
android:layout_height="match_parent" | android:layout_height="match_parent" | ||
| − | + | tools:context=".Practica_1"> | |
| − | tools:context=" | ||
<EditText | <EditText | ||
| − | android:id="@+id/ | + | android:id="@+id/edtSeculo" |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||
| − | android: | + | android:layout_marginStart="8dp" |
| − | android:inputType=" | + | android:layout_marginTop="8dp" |
| + | android:ems="10" | ||
| + | android:inputType="textPersonName" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toTopOf="parent" | ||
| + | tools:text="Introduce o século onde vives" /> | ||
<Button | <Button | ||
| + | android:id="@+id/btnPremer" | ||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
android:text="Preme aquí" | android:text="Preme aquí" | ||
| − | android:onClick="onButtonClick" /> | + | app:layout_constraintStart_toStartOf="parent" |
| + | app:layout_constraintTop_toBottomOf="@+id/edtSeculo" | ||
| + | android:onClick="onButtonClick" | ||
| + | /> | ||
| + | </android.support.constraint.ConstraintLayout> | ||
| + | </syntaxhighlight> | ||
| + | |||
| − | |||
| − | |||
| + | <br /> | ||
===O código Java da aplicación=== | ===O código Java da aplicación=== | ||
| − | <syntaxhighlight lang="java" line enclose="div" highlight=" | + | <syntaxhighlight lang="java" line enclose="div" highlight="17,21,27,38-42" > |
| − | package | + | package es.cifprodofloucha.angel.depuracion.depuracion; |
import android.app.Activity; | import android.app.Activity; | ||
import android.os.Bundle; | import android.os.Bundle; | ||
import android.util.Log; | import android.util.Log; | ||
| − | |||
| − | |||
import android.view.View; | import android.view.View; | ||
import android.widget.EditText; | import android.widget.EditText; | ||
import android.widget.Toast; | import android.widget.Toast; | ||
| − | public class | + | public class Practica_1 extends Activity { |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | public void onButtonClick(View v) { | |
| + | EditText et = (EditText) findViewById(R.id.edtSeculo); | ||
| − | + | if (et.getText().toString().equals("21")) { | |
| − | + | Toast.makeText(this, "Tes os pes na terra ", Toast.LENGTH_SHORT).show(); | |
| − | + | Log.i("DEPURACIÓN BOTÓN", "Dentro if"); | |
| − | |||
| − | |||
| − | |||
| − | + | } else if (et.getText().toString().equals("")) { | |
| − | + | Toast.makeText(this, "Non escribiches nada", Toast.LENGTH_SHORT).show(); | |
| + | Log.i("DEPURACIÓN BOTÓN", "Dentro else if"); | ||
| − | + | } else | |
| − | |||
| − | |||
| − | + | { | |
| − | + | Toast.makeText(this, "Estás noutro planeta", Toast.LENGTH_SHORT).show(); | |
| − | + | Log.i("DEPURACIÓN BOTÓN", "Dentro else"); | |
| − | + | } | |
| − | + | } | |
| − | |||
| − | |||
| − | + | @Override | |
| + | protected void onCreate(Bundle savedInstanceState) { | ||
| + | super.onCreate(savedInstanceState); | ||
| + | setContentView(R.layout.activity_practica_1); | ||
| − | + | Log.e("DEPURACIÓN", "Mensaxe de erro"); | |
| + | Log.w("DEPURACIÓN", "Mensaxe de aviso"); | ||
| + | Log.i("DEPURACIÓN", "Mensaxe de información"); | ||
| + | Log.d("DEPURACIÓN", "Mensaxe de mensaxe de depuración"); | ||
| + | Log.v("DEPURACIÓN", "Mensaxe de vervose"); | ||
| + | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | *'''Liñas | + | *'''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. | **A etiqueta (tag) é o primeiro campo. | ||
| − | *'''Liñas | + | *'''Liñas 17,21,27''': emisión de mensaxes que nos axudan a saber porque parte do código se atopa a aplicación. |
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| − | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- ( | + | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2018). |
Revisión del 21:59 12 sep 2018
Introdución
- Máis información neste enlace.
- 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.
- A imaxe amosa un conxunto de mensaxes. Os campos que conforman a mensaxe se poden escoller como se amosa na seguinte imaxe:
- 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.
- Referencias:
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.
- Depuración
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).