¿Cómo puedo ver y examinar el registro de Android?

Hay muchas cosas interesantes en el registro del sistema Android, que son útiles de muchas maneras.

  • encontrar las causas raíz de los problemas
  • identificar aplicaciones que se comportan mal

¿Cómo puedo ver y examinar el registro de Android?

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Respuestas (4)

Android 4.1 y más reciente

La forma preferida es descargar el SDK y usarlo adb logcat(requiere activar las "opciones de desarrollador" en el dispositivo).

Hay aplicaciones disponibles para ver el registro completo del sistema, sin embargo, solo funcionan en dispositivos rooteados o requieren la emisión de un comando manual adbpara que funcionen. Para obtener más información, consulte esta pregunta.

Android 4.0 y anteriores

Puede descargar el SDK y usarlo adb logcatu obtener Logcat Extrem de Google Play Store, que muestra el registro directamente en su teléfono.

Alternativamente, puede usar Terminal Emulator con el comando "logcat > /sdcard/log.txt" para escribir continuamente el registro en un archivo en la tarjeta SD. Esto puede ayudar a resolver problemas con reinicios aleatorios.
Buen punto. Algunos teléfonos tienden a enviar spam al registro lleno de información trivial, por lo que si desea minimizar el tamaño del archivo y los datos para revisar, consulte la sección "Filtrado de la salida del registro" en developer.android.com/guide/developing/tools/adb.html #logcat
LogCat Apps ya no funciona con JellyBean. Google cambió la API de Android, las aplicaciones ya no tienen permiso para leer registros de otras aplicaciones que no sean las suyas.
Creé una utilidad simple para recopilar registros de una PC: gist.github.com/hrj/5983971

Ubicaciones de archivos de registro

Hay varios directorios en los que pueden aparecer los registros (incluidos los de bloqueos); no todos están estandarizados (es decir, algunos pueden ser específicos de la ROM).

  • /data/anr: Algunos archivos de seguimiento parecen llegar aquí (Dalvik escribe seguimientos de pila aquí en ANR, es decir, "La aplicación no responde", también conocido como "Forzar cierre"; consulte, por ejemplo, extractos de registro aquí )
  • /data/dontpanicparece ser una ubicación estándar (AOSP) y contiene algunos registros de fallas que incluyen rastros (ver, por ejemplo , viaForensics y StackOverflow )
  • /data/kernelpanicses otra ubicación: al no haber tenido ningún "pánico en el kernel" en mis dispositivos Android, todavía no vi contenido allí.
  • el /data/panic/panic_daemon.configpuede apuntar a otras ubicaciones configuradas -- en mi Droid 2 menciona/sdcard/panic_data/
  • mencionado Droid 2 también tiene un /data/panicreportsdirectorio (vacío aquí)
  • /data/tombstonespuede contener varios tombstone_nnarchivos (al nnser una serie, aumenta con cada nuevo archivo). Como se colocan lápidas para los muertos, aquí se hace para "procesos muertos por accidente" (es decir, fallados) -- y es lo que se conoce como "volcados del núcleo" en los sistemas Linux/Unix. Sin embargo, no todas las aplicaciones crean lápidas; el desarrollador debe habilitarlo explícitamente (consulte Depuración de volcados de núcleo de Android ).

Puede haber algunos lugares más que se me escaparon; pero como la mayoría de los registros se realizan en tmpfs, estos datos se pierden con un reinicio y no coincidirían con la pregunta de OP.

Comandos de registro para usar con una aplicación de terminal (o adb)

Varios comandos pueden brindarle toneladas de información. Para la mayoría de ellos, se recomienda redirigirlos a un archivo ( > filename.ext) o canalizarlos a través de un filtro ( | grep search-for-this):

Registro del núcleo

Lo siguiente funciona sin root:

$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<snip>

Logcat

Aquí puede, por ejemplo, especificar en qué área está interesado: radio, eventos...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>

Obtener información del dispositivo

Y toneladas de información: detalles del dispositivo, información de la cuenta, servicios...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, type=com.google}
<snip> 

$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================

Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown 
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB 
<snip>

Todo en uno

Haz una gran bola con todo junto, desde logcat hasta dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

Estoy bastante seguro de que realmente quieres redirigir ese último comando... xD

Algo sobre permisos

PD: Naturalmente, el acceso a esa información puede requerir root, ya que la mayoría de las fuentes se encuentran en el almacenamiento interno.

Para obtener más información sobre los comandos adb logcat, consulte aquí .
O simplemente consulte nuestra etiqueta de registro-wiki @testing, que tiene aún más referencias :)
Para cualquier otra persona como yo que sea nueva en Android, para ejecutar los comandos anteriores, primero debe ejecutar $ adb shellpara conectarse al dispositivo a través de una terminal. (Por supuesto, asegúrese de que su dispositivo esté conectado a su computadora y que la depuración de USB esté activada).

Un método sin root, que funciona incluso con nuevas versiones de Android:

requisitos previos:

  • Linux, Windows o Mac
  • Cable USB para su dispositivo
  • Dispositivo Android

Instrucciones:

  1. Instale el controlador de su dispositivo para usar adb. Todo lo que necesitas lo encontrarás aquí
  2. Descargue el ejecutable adb para su sistema operativo. Es parte del SDK de Android, pero es posible que pueda encontrar el ejecutable adb individualmente.
  3. Conecte su dispositivo Android.
  4. Activa las opciones de desarrollador .
  5. Habilitar depuración de USB.
  6. Abra un símbolo del sistema (windows) o terminal (linux / mac). Cómo hacerlo: En Windows: windows + r > ingrese "cmd" (sin comillas) > haga clic en enter | En Linux: ¿No sabes cómo abrir una terminal? jajaja | En Mac: escriba Terminalen Spotlight y ábralo
  7. CD al directorio donde se encuentra el ejecutable adb. En Windows: vaya al directorio donde descargó el ejecutable adb, presione Mayús+clic derecho y seleccione "Abrir consola" (o similar) | En Linux / Mac: haga clic derecho en el directorio y seleccione "Abrir terminal aquí" (o simplemente CD en el directorio)
  8. Escriba su cmd/terminal: adb devicespara verificar que su dispositivo esté correctamente conectado.
  9. Si su dispositivo está correctamente seleccionado, escriba adb logcatpara mostrar el poderoso y mágico logcat, también conocido como stacktrace.
  10. Reproduzca su error (o lo que sea) en su dispositivo.
  11. Inmediatamente después, pegue toda la ventana de cmd/terminal en un servicio de pegado como http://pastebin.com/ y envíenoslo.

(principalmente copiado de Leandros )

ADB se puede descargar desde aquí: developer.android.com/studio/releases/platform-tools

Se encuentra en /sdcard/bugreports.

Nunca he tenido una carpeta así en mi teléfono... ¿es específica de un fabricante o dispositivo?
De Logcat - CyanogenMod Wiki : puede usar una combinación de teclas mágicas para crear un archivo de informe de errores en /sdcard/bugreports. Entonces, esto parece ser a) un poco específico (probablemente para CM), yb) no es la respuesta a la pregunta, ya que el OP busca los "generados automáticamente".