Como posso visualizar e examinar o log do Android?

109

Há muitas coisas interessantes no log do sistema Android, que são úteis de várias maneiras

  • encontre causas de problemas
  • identificar aplicativos que se comportam mal

Como posso visualizar e examinar o log do Android?

Fluxo
fonte
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Mateus Leia

Respostas:

59

Android 4.1 e mais recente

A maneira preferida é baixar o SDK e usá-lo adb logcat(requer ativar "opções de desenvolvedor" no dispositivo).

Existem aplicativos disponíveis para exibir o log completo do sistema, no entanto, eles funcionam apenas em dispositivos raiz ou exigem a emissão de um comando manual adbpara fazê-los funcionar. Para mais informações, veja esta pergunta.

Android 4.0 e mais antigo

Você pode baixar o SDK e usar adb logcatou obter o Logcat Extrem na Google Play Store, que mostra o log diretamente no seu telefone.

onik
fonte
2
Como alternativa, você pode usar o Emulador de Terminal com o comando "logcat> /sdcard/log.txt" para gravar continuamente o log em um arquivo no cartão SD. Isso pode ajudar a descobrir problemas com reinicializações aleatórias.
Chahk
Bom ponto. Alguns telefones tendem a enviar spam ao log com informações triviais, portanto, se você deseja minimizar o tamanho do arquivo e os dados, consulte a seção "Filtrando a saída do log" em developer.android.com/guide/developing/tools/adb.html #logcat
onik 11/11
O LogCat Apps não funciona com o JellyBean. O Google alterou a API do Android. Os aplicativos não têm mais permissão para ler registros de outros aplicativos que não os deles.
Leandros
Eu criei um utilitário simples para coletar logs de um PC: gist.github.com/hrj/5983971
HRJ
Logcat Extreme é o aplicativo agradável para log see
Arpit Patel
57

Locais do arquivo de log

Existem vários diretórios nos quais os logs (incluindo os de falhas) podem aparecer - nem todos são padronizados (ou seja, alguns podem ser específicos da ROM).

  • /data/anr: Alguns arquivos de rastreamento parecem chegar aqui (Dalvik grava rastreamentos de pilha aqui no ANR, ou seja, "Aplicativo não responde", também conhecido como "Forçar fechamento"; veja, por exemplo, trechos de log aqui )
  • /data/dontpanicparece ser um local padrão (AOSP) e contém alguns logs de falha, incluindo rastreios (consulte, por exemplo, viaForensics e StackOverflow )
  • /data/kernelpanics é outro local - sem nenhum "pânico do kernel" nos meus dispositivos Android, ainda não havia conteúdo lá.
  • o /data/panic/panic_daemon.configpode apontar para outros locais configurados - no meu Droid 2 ele menciona/sdcard/panic_data/
  • mencionado Droid 2 também tem um /data/panicreportsdiretório (vazio aqui)
  • /data/tombstonespode conter vários tombstone_nnarquivos ( nnsendo serial, aumentado a cada novo arquivo). Como as lápides são colocadas para os mortos, isso é feito aqui para "processos mortos por acidente" (ou seja, travou) - e é o que é chamado de "core dumps" nos sistemas Linux / Unix. No entanto, nem todos os aplicativos criam lápides; isso deve ser explicitamente ativado pelo desenvolvedor (consulte Depurando Android Core Dumps ).

Pode haver mais alguns locais que me escaparam; mas, como a maioria dos logs é feita tmpfs, esses dados são perdidos com uma reinicialização e não coincidem com a questão dos OPs.

Comandos de log para usar com um aplicativo de terminal (ou adb)

Vários comandos podem fornecer toneladas de informações. Para a maioria deles, é recomendável redirecioná-los para um arquivo ( > filename.ext) ou canalizá-los através de um filtro ( | grep search-for-this):

Log do Kernel

O seguinte funciona sem raiz:

$ 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

Aqui você pode, por exemplo, especificar em que área você está interessado - rádio, 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>

Obtendo informações do dispositivo

E muito: detalhes do dispositivo, informações da conta, serviços ...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {[email protected], 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>

Tudo em um

Faça uma grande bola com tudo junto, do logcat ao dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

Tenho certeza que você realmente deseja redirecionar esse último comando ... xD

Algo sobre permissões

PS: Naturalmente, o acesso a essas informações pode exigir raiz, pois a maioria das fontes está localizada no armazenamento interno.

Izzy
fonte
Para obter mais informações sobre os comandos adb logcat, consulte aqui .
test
Ou apenas verificar o nosso registro de tag-wiki @testing - que tem ainda mais referências :)
Izzy
O link para "Depurando o Android Core Dumps" está morto, podemos obter uma alternativa?
Spidey 04/04
1
@ Spidey sempre existe o Archive.ORG para esse tipo de problema (o link vai para uma cópia de trabalho lá).
Izzy
12

A constatou que o CatLog exibe o log do Android um pouco melhor que o aLogcat. Além disso adb logcat, é isso que estou usando.

Fluxo
fonte
Veja meu comentário acima, sobre os aplicativos LogCat.
Leandros
2
Eu atualizei a pergunta. Observe que as informações relativas à posição (por exemplo, "acima") podem facilmente ficar desatualizadas, pois a ordem das respostas pode mudar com o tempo.
Flow
3

Um método sem raiz, que funciona mesmo com novas versões do Android:

Pré-requisitos:

  • Linux, Windows ou Mac
  • Cabo USB para o seu dispositivo
  • Dispositivo Android

Instruções:

  1. Instale o driver do dispositivo para usar o adb. Tudo o que você precisa encontrará aqui
  2. Faça o download do adb executável para o seu sistema operacional. Faz parte do SDK do Android, mas você pode encontrar o executável adb individualmente.
  3. Conecte seu dispositivo Android.
  4. Habilite as opções do desenvolvedor .
  5. Ativar o USB depuração.
  6. Abra um prompt de comando (windows) ou terminal (linux / mac). Como fazer: No Windows: windows + r> digite "cmd" (sem aspas)> clique em enter | No Linux: você não sabe como abrir um terminal? LOL No Mac: digite Terminalno Spotlight e abra-o
  7. CD para o diretório em que o executável adb está localizado. No Windows: Vá para o diretório em que você baixou o executável adb, Shift + Clique com o Botão Direito e selecione "Abrir Console" (ou similar) | No Linux / Mac: clique com o botão direito do mouse no diretório e selecione "Abrir terminal aqui" (ou simplesmente CD no diretório)
  8. Digite seu cmd / terminal: adb devicespara verificar se o seu dispositivo está conectado corretamente.
  9. Se o seu dispositivo estiver selecionado corretamente, digite adb logcatpara mostrar o poderoso e mágico logcat aka stacktrace.
  10. Reproduza seu erro (ou o que for) no seu dispositivo.
  11. Logo depois, cole toda a janela do cmd / terminal em um serviço de colagem como http://pastebin.com/ e envie-o para nós.

(Principalmente copiado de Leandros )

Nicolas Raoul
fonte
2

O aplicativo gratuito SysInfo ( Página do projeto ) exibirá os logs do sistema e compactará um relatório completo do sistema para enviar por email, dropbox, NFC, etc. Sem mencionar muitas outras informações interessantes do sistema.

JRobert
fonte
(Sim, estou quase um ano atrasado, mas este precisa ser mencionado).
JRobert
Ambos os links estão quebrados agora.
Jk7 03/03
O segundo link (página do projeto) ainda funciona para mim, mas as últimas entradas são de 2010. O Android muda algumas vezes desde então, quebrando muitas funcionalidades do Sysinfo.
JRobert #
-1

Está localizado em /sdcard/bugreports.

wasimys
fonte
3
Eu nunca tive essa pasta no meu telefone ... isso é específico para um fabricante ou dispositivo?
Matthew Leia
2
No Logcat - CyanogenMod Wiki : Você pode usar uma combinação de teclas mágicas para criar um arquivo de relatório de erros em / sdcard / bugreports. Portanto, isso parece ser a) um pouco específico (provavelmente para CM) eb) não a resposta para a pergunta, pois o OP procura por "gerados automaticamente".
Izzy