Conceptos básicos sobre el uso de logcat en el desarrollo de Android
Estoy empezando Android y no entiendo cómo usar esta cosa logcat .
Estoy trabajando en el emulador, pero probablemente esté trabajando en un dispositivo real en el futuro también. Uno de los programas que estaba probando ( VER AQUÍ ) cuelga cuando se inicia y otros usuarios sugirieron que mire el logcat. Pero el logcat en mi computadora sigue mostrando nuevo texto y desplazándose hacia arriba. No estoy seguro de cómo buscar algo en todo ese lío. A veces se mantiene desplazándose cuando ni siquiera estoy probando mi programa.
- Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1), subproceso 32140
- Pantalla de la consola de Android: W / art: Intenta eliminar la referencia local distinta de JNI
- ¿Por qué Logcat no está mostrando nada?
- Android: ¿Puedo ignorar los errores "Vista primaria no es un TextView" y "sendUserActionEvent () mView == null"?
- Cómo abrir LogCat en Eclipse (para Android Debug)
¿Muestra cosas si hago algo en el emulador? El emulador ya es tan lento que es difícil averiguar qué evento en el emulador está causando qué mensaje.
Además, para un principiante, ¿qué nivel de verbosidad es suficiente en el logcat? Ir a asertar no muestra nada (lo cual es probablemente lógico ya que no tengo aserciones habilitadas) y asumí que Error era probablemente el modo menos detallado, pero incluso entonces el registro tiene demasiados mensajes para manejar.
¿Cuál es el nivel mínimo de verbosidad que necesito para establecerlo, y hay algún programa de ejemplo por ahí que me permite probar qué tipo de evento en el código produce qué tipo si el mensaje en el logcat? (Estoy usando logcat en el IDE)
— EDITAR —
Veo que el logcat tiene mensajes como estos
08-12 08:24:26.699: I/Choreographer(528): Skipped 57 frames! The application may be doing too much work on its main thread. 08-12 08:25:02.550: I/Choreographer(528): Skipped 33 frames! The application may be doing too much work on its main thread. 08-12 08:25:07.950: I/Choreographer(528): Skipped 37 frames! The application may be doing too much work on its main thread. 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
Esto está en el modo Info, y el modo verboso tiene un texto aún más incomprensible, así que no lo incluí. Parece que no se puede encontrar el archivo que contiene el efecto de sonido que se reproduce cuando se presiona el botón de retroceso, que se muestra en el registro. ¿Cómo puedo eliminar esos mensajes innecesarios relacionados con la interfaz de usuario de OS de teléfonos y sólo mostrar mensajes relacionados con el programa que estoy probando y lo que está causando que colgar antes de incluso onCreate () se llama en el código? Quiero ser capaz de hacer esto desde el IDE por ahora.
- Cómo vaciar (borrar) el búfer logcat en Android
- Cómo depurar BOOT_COMPLETE radiodifusión receptor "Fuerza Close" se bloquea?
- Navegación InteLiJ IDEA logcat
- ¿Cómo insertar un log en LogCat que cuando hago clic en salta a su línea en el código?
- Historial logcat de Android Studio / tamaño del búfer
- Cómo cambiar el tamaño de fuente logcat en Android Studio 1.0.0?
- Android Genymotion VM logcat se ejecuta en bucle infinito
- No se puede iniciar la aplicación a través de Android Studio (logcat )
Log.v () – VERBOSE
Log.d () – DEBUG
Log.i () – INFO
Log.w () – WARN
Log.e () – ERROR
Consejo: Una buena convención es declarar una constante TAG en tu clase:
private static final String TAG = "MyActivity";
Consejo: No olvide que cuando hace una llamada como
Log.e(TAG, "index=" + i);
Utilice Log.e();
Porque le demuestra en color rojo usted puede identificar fácilmente error en todo el registro
También puede utilizar flitter Logs en eclipse comprobar a continuación.
Para más detalles, visite el sitio para desarrolladores .
Lo que hago cuando trabajo en una aplicación con un problema es cambiar al modo ERROR en el logcat y también agregar un filtro para el nombre del paquete de mi aplicación, ej. com.something.blah
. De esta manera sólo veo mensajes de error relacionados con mi aplicación.
Por supuesto, hay veces cuando esto no es suficiente información, pero por el momento que necesita más información que debe ser cómodo trabajando con el logcat 🙂
Para el registro manual (usando Log.*
) Una pestaña muy única (algo como ThisIsAVeryUniqueTag1234
) puede ahorrar mucho tiempo. Basta con filtrar en esta etiqueta y debe ser el único mensaje que vea. Consulte Registro para obtener información completa sobre cómo utilizar las etiquetas y el registro manual.
adb -d logcat <your package name>:<log level> *:S
-d
denota un dispositivo real y -e
denota un emulador. Si hay más de 1 emuladores en ejecución, puede usar -s emulator-<emulator number>
(por ejemplo, -s emulator-5558
)
Ejemplo: adb -d logcat com.example.example:I *:S
O si está utilizando System.out.print
para enviar mensajes al registro, puede usar adb -d logcat System.out:I *:S
para mostrar sólo las llamadas a System.out
.
Puede encontrar todos los niveles de registro y más información aquí: http://developer.android.com/guide/developing/tools/adb.html#logcat
Debe utilizar Log.<log level>(TAG, message)
en su código donde la etiqueta puede ser cualquier cosa pero siempre utilizo el nombre del paquete.
Ejemplo: Log.i("com.example.example", "message");