Compartilhar via


Log de depuração do Android

Um truque muito comum que os desenvolvedores usam para depurar seus aplicativos é fazer chamadas para o Console.WriteLine. No entanto, em uma plataforma móvel como Android não há console. Dispositivos Android fornecem um log que você pode utilizar ao gravar aplicativos. Às vezes, isso é chamado de logcat devido ao comando que você digita para recuperá-lo. Use a ferramenta Log de Depuração para visualizar os dados registrados.

Visão geral do log de depuração do Android

A ferramenta Log de Depuração fornece uma maneira de visualizar a saída do log durante a depuração de um aplicativo através do Visual Studio. O log de depuração suporta os seguintes dispositivos:

  • acessórios, tablets e telefones Android físicos.
  • Um dispositivo Virtual Android em execução no Android Emulator.

Observação

A ferramenta Log de Depuração não funciona com o Xamarin Live Player.

O Log de Depuração não exibe mensagens de log que são geradas durante o execução do aplicativo autônomo no dispositivo (ou seja, enquanto ele estiver desconectado do Visual Studio).

Acessar o Log de Depuração do Visual Studio

Para abrir a ferramenta Log do Dispositivo, clique no ícone Log do Dispositivo (logcat) na barra de ferramentas:

Local da ferramenta Log de Dispositivos na barra de ferramentas

Como alternativa, inicie a ferramenta Log do Dispositivo por meio de uma das seguintes seleções de menu:

  • Exibir > outros logs de dispositivos Windows >
  • Ferramentas do Log de Dispositivos > Android >

A captura de tela a seguir ilustra as várias partes da janela Ferramenta de Depuração:

Partes da janela Ferramenta de Depuração

  • Seletor de Dispositivo – seleciona qual dispositivo físico ou emulador em execução monitorar.

  • Entradas de log – uma tabela de mensagens de log do logcat.

  • Limpar Entradas de Log – limpa todas as entradas de log atuais da tabela.

  • Reproduzir/Pausar – alterna entre atualizar ou pausar a exibição de novas entradas de log.

  • Parar – interrompe a exibição de novas entradas de log.

  • Caixa de Pesquisa – insira cadeias de caracteres de pesquisa nesta caixa para filtrar um subconjunto de entradas de log.

Quando a janela da ferramenta Log de Depuração for exibida, use o menu suspenso do dispositivo para escolher o dispositivo Android a ser monitorado:

Local do Seletor de Dispositivo

Depois que o dispositivo é selecionado, a ferramenta Log de Dispositivo adiciona automaticamente entradas de log de um aplicativo em execução – essas entradas de log são mostradas na tabela de entradas de log. Alternar entre dispositivos interrompe e inicia o registro de dispositivo. Observe que um projeto Android deve ser carregado antes que qualquer dispositivo apareça no seletor de dispositivos. Se o dispositivo não aparecer no seletor de dispositivos, verifique se ele está disponível no menu suspenso do dispositivo do Visual Studio ao lado do botão Iniciar.

Acessando da Linha de Comando

Outra opção é exibir o log de depuração por meio da linha de comando. Abra uma janela do prompt de comando e navegue até a pasta ferramentas de plataforma do SDK do Android (normalmente, a pasta platform-tools do SDK está localizada em C:\Arquivos de Programas (x86)\Android\android-sdk\platform-tools).

Se apenas um único dispositivo (dispositivo físico ou emulador) estiver conectado, o log poderá ser visualizado inserindo o seguinte comando:

$ adb logcat

Se mais de um dispositivo estiver conectado, o dispositivo deverá ser identificado explicitamente. Por exemplo, adb -d logcat exibe o log do único dispositivo físico conectado, enquanto adb -e logcat mostra o log do único emulador em execução.

Mais comandos podem ser encontrados inserindo adb e lendo as mensagens de ajuda.

Gravar no Log de Depuração

As mensagens podem ser gravadas no Log de Depuração usando os métodos da classe Android.Util.Log. Por exemplo:

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");

Isso produz uma saída semelhante à seguinte:

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

Também é possível usar para gravar Console.WriteLine no Log de Depuração – essas mensagens aparecem no logcat com um formato de saída ligeiramente diferente (essa técnica é particularmente útil ao depurar aplicativos Xamarin.Forms no Android):

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

Isso produz um resultado semelhante ao seguinte logcat:

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

Mensagens interessantes

Ao ler o log (e especialmente ao fornecer snippets de log a outras pessoas), ler o arquivo de log em sua totalidade é muitas vezes incômodo. Para tornar mais fácil de navegar por meio de mensagens de log, comece procurando uma entrada de log semelhante à seguinte:

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

Em particular, procure uma linha que corresponda à expressão regular que também contenha o nome do pacote do aplicativo:

^I.*ActivityManager.*Starting: Intent

Esta é a linha que corresponde ao início de uma atividade e a maior parte das mensagens a seguir (mas não todas) deve estar relacionada ao aplicativo.

Observe que cada mensagem contém o PID (identificador de processo) do processo de geração de mensagem. Na mensagem ActivityManager acima, o processo 12944 gerou a mensagem. Para determinar qual processo é o processo do aplicativo que está sendo depurado, procure a mensagem mono.MonoRuntimeProvider:

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

Essa mensagem vem do processo que foi iniciado. Todas as mensagens subsequentes que contêm este pid vêm do mesmo processo.