Problemas ao acessar logs de mensagens no Jelly Bean com aLogcat

12

Sumário

Estou tendo problemas para acessar as mensagens de log do K9 usando o aLogcat, veja abaixo para obter mais detalhes. O que eu gostaria de saber é:

  • Por que nenhuma mensagem de log do K9 aparece no visualizador de log do aLogcat?
  • Alguém tem alguma sugestão de como posso ver o texto completo dos erros que estão ocorrendo ao tentar sincronizar minhas pastas K9?
  • Alguma coisa mudou no Jelly Bean que levou o registro do K9 a parar de funcionar?
  • Como parece haver poucas mensagens sendo mostradas pelo aLogcat em geral, algo mudou no Jelly Bean, o que pode significar que ele não pode mais acessar todas as mensagens?

Detalhe

Recentemente, tenho tido problemas de conexão com o K9. Minhas pastas falham ao sincronizar e a lista de pastas acaba cheia de erros de soquete ( libcore.io.ErrnoException:) ou erros de SSL ( javex.net.ssl.SSLException:) etc., onde deve ser o último horário verificado . Recebo mensagens diferentes, dependendo do problema que está ocorrendo no momento, mas não consigo ver o texto completo da mensagem de erro, por isso é difícil adivinhar qual a causa.

Pensando que os arquivos de log podem conter mais informações, segui as instruções em Gravando um log de depuração , habilitei o log de depuração no K9, instalei o aLogcat e tentei examinar os logs. Infelizmente, qualquer que seja o buffer de registro selecionado ( Principal , Eventos ou Rádio ), parece não haver mensagens do K9.

Se eu adicionar o (k9|AndroidRuntime)filtro regex sugerido , não vejo nada em nenhum dos logs. Se eu removê-lo, o Main contém principalmente mensagens de coleta de lixo, os Eventos parecem conter principalmente mensagens do próprio aLogcat e ainda não vi uma mensagem de log no Radio .

Se isso faz alguma diferença, estou usando um Nexus 7, mas eu pensaria que o log teria sido em um local padrão que não mudaria entre as versões do Android.

Mark Booth
fonte

Respostas:

24

Alguém tem alguma sugestão de como posso ver o texto completo dos erros que estão ocorrendo ao tentar sincronizar minhas pastas K9?

Parece que não há como ver essas mensagens de log no dispositivo sem acesso root , mas se você tiver acesso root, existem algumas opções: conceda as permissões necessárias ao aLogcat ou considere o uso de uma TM de corte horrível para visualizar diretamente.

Veja os arquivos de log no seu PC ou estação de trabalho via adb

Se você pode conectar seu dispositivo Android a um PC ou estação de trabalho, poderá acessar os logs por meio do adbcomando

Para fazer isso no Windows, primeiro você precisará instalar o Android SDK (que exigirá o Java SE SDK ) e adicionar o android-sdk\toolse android-sdk\platform-toolsao caminho do sistema . Em seguida, ative a depuração USB no seu Nexus 7, conecte-o via USB e instale a interface ADB composta do Android a partir de android-sdk\extras\google\usb_driver(eu tive que forçar o Windows XP a procurar aqui, ele não encontraria os drivers por conta própria).

Para obter detalhes de como começar adba funcionar sem a instalação completa do SDK do Android ou em máquinas Mac ou Linux, consulte a excelente resposta de Izzy para Existe uma instalação mínima do ADB?

Então você pode abrir um shell (ou seja, uma cmdjanela) e executar o comando:

adb logcat k9:V *:S AndroidRuntime:E
  • Confirmei que isso funciona no meu Nexus 7 sem raiz.

Conceder permissões ao aLogcat

Se você tiver acesso root , considere conceder a READ_LOGSpermissão ao aLogcat , conforme sugerido neste post. ALogcat / CatLog / Lumberjack não está funcionando? Faça isso ... no fórum xda-developers :

pm grant <pkg> android.permission.READ_LOGS

Para conceder essa permissão a alogcatou alogcat.donate, você usaria um dos seguintes comandos, dependendo de estar executando a versão doar ou não:

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS
pm grant org.jtb.alogcat android.permission.READ_LOGS

De acordo com uma postagem sobre desenvolvedores do Android e o ticket , a concessão de permissão sobrevive à reinicialização e atualização, mas não à desinstalação / reinstalação.

Infelizmente, como isso requer acesso root, seja eu executado no dispositivo ou no meu PC (prefixado por adb shell), recebo o erro:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Não posso confirmar que isso funciona, pois meu Nexus 7 não foi enraizado.

Considere usar um TM de corte horrível

Se você tiver acesso root , considere criar o logcat setuid root e executar o logcat a partir do shell do dispositivo, conforme sugerido nesta resposta ao meu Como posso acessar arquivos de log do Android no meu Nexus 7 sem acesso root? questão:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Novamente, não posso confirmar que isso funcione e provavelmente o usaria apenas como último recurso , dadas as implicações de segurança.

Por que nenhuma mensagem de log do K9 aparece no visualizador de log do aLogcat ?

Alguma coisa mudou no Jelly Bean que levou o registro do K9 a parar de funcionar?

Visto que parece haver muito poucas mensagens sendo mostradas por aLogcat em geral, algo mudou no Jelly Bean, o que pode significar que ele não pode mais acessar todas as mensagens?

Parece ser uma alteração no Jelly Bean que afeta todos os aplicativos que podem tentar ler os arquivos de log.

Aparentemente, a permissão READ_LOGS não é concedida a aplicativos de terceiros no Jelly Bean . Como esse link parece não confiável:

Hoje testei meu aplicativo no mais recente emulador (api 16) antes de liberá-lo para o Google Play. Acontece que o Android agora se recusa a conceder essa permissão a aplicativos de terceiros. Isso é estranho, porque eu examinei todas as alterações documentadas de Jelly Bean e não consegui encontrar nada que mencionasse a permissão READ_LOGS.

e depois

O protectionLevel para READ_LOGS agora é "signature | system | development". A nova sintaxe de canal para protectionLevel também não está documentada (consulte http://code.google.com/p/android/issues/detail?id=34785 ).

Minha suspeita é que o aLogcat está apenas vendo mensagens geradas por si só e é vm.

Para obter mais informações, consulte Respostas de fluxo à minha pergunta. Quão ativo devo esperar que meu arquivo de log do sistema Jelly Bean seja?

Mark Booth
fonte
O IIRC adb logcatainda pode obter o log completo do Android no Jelly Bean.
Flow
Ele não requer raiz, mas você precisa ativar o adb no seu dispositivo (geralmente nas opções do desenvolvedor).
Flow
@Flow - Confirmei agora que posso visualizar o log no meu PC usando a adb logcatpartir daí e atualizei minha resposta de acordo. Ainda é frustrante não encontrar nenhuma maneira de acessar os logs sem acesso root do próprio dispositivo.
Mark Booth
É o ponto principal na alteração do log JB que um usuário não raiz não pode acessar o log completo do sistema.
Flow
@ Flow - Sim, e o objetivo das mensagens de log é que você pode usá-las para descobrir o que está acontecendo. O JB torna um aplicativo como o aLogcat bastante inútil, já que agora só pode acessar as mensagens de log que ele próprio criou!
Mark Booth
0

Eu vi esse comportamento no K9 quando meu servidor de email atualizou seus certificados SSL. A correção foi pressionar a conta por um longo tempo, selecionar Account settings -> Fetching mail -> Incoming servere apenas Nextpercorrer as páginas para confirmar suas configurações até você obter o pop-up sobre o certificado (isso pode não aparecer se tudo estiver bem com o certificado, o meu tinha um vhost errado). Confirme o certificado e siga as demais configurações e sua conta deve começar a funcionar.

onik
fonte
@ MarkBooth Talvez você devesse ter perguntado isso, geralmente preferimos perguntas que não pressupõem uma solução.
Matthew Leia
@MatthewRead Devo concordar com Mark aqui: os 4 itens em seu resumo afirmam explicitamente que ele quer ajuda com o problema de registro em log, e também não vejo o "problema XY" aqui (solução pressuposta). K9 é claramente apenas o exemplo - mas talvez o título da pergunta deva ser ajustado para sublinhá-lo: "Usar o logcat para determinar a causa dos problemas" corresponderia (e focaria) melhor;)
Izzy
@ MarkBooth Yepp, tnx - muito mais claro agora. Também tnx para a resposta detalhada! Mantenha-nos atualizados sobre o seu progresso.
Izzy
Devo excluir minha resposta, pois ela fica completamente fora de tópico após as edições e propensa a receber votos negativos?
onik 6/09/12
Cabe a você onik. Como disse originalmente, agradeço que você reserve um tempo para postar uma resposta, mas agora que atualizei a pergunta, sua resposta parece ainda mais deslocada. Suponho que você sempre pode esperar e ver se a votação é inferior a -3 para que você possa coletar seu crachá de pressão por pares . * 8 ')
Mark Booth