Registro de depuración de Android

Un truco muy común que emplean los desarrolladores para depurar sus aplicaciones es realizar llamadas a Console.WriteLine. Pero en una plataforma móvil como Android no hay consola. Los dispositivos Android proporcionan un registro que puede usar al escribir aplicaciones. Este registro se conoce a veces como logcat debido al comando escrito para recuperarlo. Use la herramienta Registro de depuración para ver los datos registrados.

Información general sobre el registro de depuración de Android

La herramienta Registro de depuración proporciona un método para ver la salida del registro mientras se depura una aplicación a través de Visual Studio. El registro de depuración es compatible con los siguientes dispositivos:

  • Teléfonos, tabletas y ponibles Android físicos.
  • Dispositivo virtual Android en ejecución en Android Emulator.

Nota

La herramienta Registro de depuración no funciona con Xamarin Live Player.

El Registro de depuración no muestra mensajes de registro que se generan mientras la aplicación se ejecuta de forma independiente en el dispositivo (es decir, mientras está desconectada de Visual Studio).

Acceso al registro de depuración desde Visual Studio

Para abrir la herramienta Registro de dispositivos, haga clic en el icono Registro de dispositivos (logcat) en la barra de herramientas:

Ubicación de la herramienta Registro de dispositivos en la barra de herramientas

Como alternativa, inicie la herramienta Registro de dispositivos desde una de las selecciones de menú siguientes:

  • Ver > otro registro de dispositivos Windows >
  • Registro de dispositivos Android > tools >

La captura de pantalla siguiente muestra las distintas partes de la ventana Herramienta de depuración:

Partes de la ventana Herramienta de depuración

  • Selector de dispositivos: selecciona qué dispositivo físico o emulador en ejecución se va a supervisar.

  • Entradas de registro : una tabla de mensajes de registro de logcat.

  • Borrar entradas de registro : borra todas las entradas de registro actuales de la tabla.

  • Reproducir o pausar : alterna entre actualizar o pausar la presentación de nuevas entradas de registro.

  • Stop : detiene la presentación de nuevas entradas de registro.

  • Cuadro de búsqueda: escriba cadenas de búsqueda en este cuadro para filtrar por un subconjunto de entradas de registro.

Cuando se muestre la ventana de la herramienta Registro de depuración, use el menú desplegable de dispositivos para elegir el dispositivo Android que desea supervisar:

Ubicación del selector de dispositivos

Una vez seleccionado el dispositivo, la herramienta Registro de dispositivos agrega automáticamente entradas de registro de una aplicación en ejecución: estas entradas de registro se muestran en la tabla de entradas de registro. El cambio entre dispositivos se detiene y se inicia el registro de dispositivos. Tenga en cuenta que un proyecto Android debe estar cargado antes de que los dispositivos aparezcan en el selector de dispositivos. Si el dispositivo no aparece en el selector de dispositivos, compruebe que está disponible en el menú desplegable de dispositivos de Visual Studio junto al botón Iniciar.

Acceso desde la línea de comandos

Otra opción es ver el registro de depuración a través de la línea de comandos. Abra una ventana del símbolo del sistema y vaya a la carpeta de herramientas de la plataforma android SDK (normalmente, la carpeta de herramientas de la plataforma del SDK se encuentra en C:\Archivos de programa (x86)\Android\android-sdk\platform-tools).

Si se conecta solo un dispositivo (dispositivo físico o emulador), se puede ver el registro escribiendo el comando siguiente:

$ adb logcat

Si se conecta más de un dispositivo, el dispositivo se debe identificar explícitamente. Por ejemplo, adb -d logcat muestra el registro del único dispositivo físico conectado, mientras que adb -e logcat muestra el registro del único emulador que se ejecuta.

Encontrará más comandos escribiendo adb y leyendo los mensajes de ayuda.

Escribir en el registro de depuración

Los mensajes pueden escribirse en el registro de depuración usando los métodos de la clase Android.Util.Log. Por ejemplo:

string tag = "myapp";

Log.Info (tag, "this is an info message");
Log.Warn (tag, "this is a warning message");
Log.Error (tag, "this is an error message");

Esto genera una salida similar a la siguiente:

I/myapp   (11103): this is an info message
W/myapp   (11103): this is a warning message
E/myapp   (11103): this is an error message

También es posible usar Console.WriteLine para escribir en el registro de depuración : estos mensajes aparecen en logcat con un formato de salida ligeramente diferente (esta técnica es especialmente útil al depurar aplicaciones de Xamarin.Forms en Android):

System.Console.WriteLine ("DEBUG - Button Clicked!");

Esto genera una salida similar a la siguiente en logcat:

Info (19543) / mono-stdout: DEBUG - Button Clicked!

Mensajes interesantes

Al leer el registro (y especialmente al proporcionar fragmentos de código de registro a otras personas), a menudo es demasiado incómodo examinar el archivo de registro en su totalidad. Para facilitar la navegación por los mensajes de registro, empiece buscando una entrada de registro que se parezca a la siguiente:

I/ActivityManager(12944): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=GcTest.GcTest/gctest.Activity1 } from pid 24175

En concreto, busque una línea que coincida con la expresión regular que también contiene el nombre del paquete de aplicación:

^I.*ActivityManager.*Starting: Intent

Esta es la línea que corresponde al inicio de una actividad, y la mayoría de los mensajes siguientes (pero no todos) deberían estar relacionados con la aplicación.

Tenga en cuenta que cada mensaje contiene el identificador de proceso (pid) del proceso que genera el mensaje. En el mensaje de ActivityManager anterior, el proceso 12944 generó el mensaje. Para determinar qué proceso es el proceso de la aplicación que se está depurando, busque el mensaje mono.MonoRuntimeProvider:

I/ActivityThread(  602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider

Este mensaje procede del proceso que se inició. Todos los mensajes posteriores que contienen este pid proceden del mismo proceso.