Condividi tramite


Log di debug Android

Un espediente piuttosto comune a cui ricorrono gli sviluppatori per il debug delle proprie applicazioni sono le chiamate a Console.WriteLine. In una piattaforma per dispositivi mobili come Android, tuttavia, la console non è disponibile. I dispositivi Android specificano un log che è possibile usare durante la scrittura delle app. Questo log viene a volte indicato come logcat a causa del comando digitato per recuperarlo. Usare la strumento Log di debug per visualizzare i dati registrati.

Panoramica del log di debug Android

Lo strumento Log di debug fornisce un modo per visualizzare l'output del log durante il debug di un'app tramite Visual Studio. Il log di debug supporta i dispositivi seguenti:

  • Telefoni, tablet e dispositivi indossabili Android fisici.
  • Un dispositivo virtuale Android in esecuzione nell'emulatore Android.

Nota

Lo strumento Log di debug non funziona con Xamarin Live Player.

Log di Debug non visualizza i messaggi di log generati durante l'esecuzione dell'app autonoma nel dispositivo, ovvero mentre è disconnessa da Visual Studio.

Accesso al log di debug da Visual Studio

Per aprire lo strumento Log del dispositivo fare clic sull'icona Log del dispositivo (logcat) sulla barra degli strumenti:

Location of Device Log tool on the toolbar

In alternativa, avviare lo strumento Log del dispositivo da uno dei comandi di menu seguenti:

  • Visualizzare > il log di altri dispositivi Windows >
  • Strumenti > Per il log dei dispositivi Android >

Lo screenshot seguente mostra le varie parti della finestra dello strumento di debug:

Parts of the Debug Tool window

  • Selettore di dispositivo: consente di selezionare il dispositivo fisico o l'emulatore in esecuzione da monitorare.

  • Voci di log: tabella dei messaggi di log da logcat.

  • Cancella voci di log: cancella tutte le voci di log correnti dalla tabella.

  • Riproduci/Sospendi : attiva/disattiva l'aggiornamento o la sospensione della visualizzazione delle nuove voci di log.

  • Arresta : interrompe la visualizzazione delle nuove voci di log.

  • Casella di ricerca: immettere le stringhe di ricerca in questa casella per filtrare un subset di voci di log.

Quando la finestra dello strumento Log di debug è visualizzata, usare il menu a discesa dei dispositivi per scegliere il dispositivo Android da monitorare:

Location of Device Selector

Dopo aver selezionato il dispositivo, lo strumento Log dispositivo aggiunge automaticamente le voci di log da un'app in esecuzione. Queste voci di log vengono visualizzate nella tabella delle voci di log. Il passaggio da un dispositivo all'altro arresta e avvia la registrazione per il dispositivo. Si noti che è necessario caricare un progetto Android prima che vengano visualizzati tutti i dispositivi nel selettore di dispositivo. Se il dispositivo non compare nel selettore di dispositivo, verificare che sia disponibile nel menu a discesa dei dispositivi di Visual Studio accanto al pulsante Start.

Accesso dalla riga di comando

Un'altra opzione per visualizzare il log di debug è tramite la riga di comando. Aprire una finestra del prompt dei comandi e passare alla cartella Android SDK platform-tools (in genere la cartella SDK platform-tools si trova in C:\Programmi (x86)\Android\android-sdk\platform-tools.

Se è collegato solo un singolo dispositivo (dispositivo fisico o emulatore), è possibile visualizzare il log immettendo il comando seguente:

$ adb logcat

Se sono collegati più dispositivi, è necessario identificare in modo esplicito il dispositivo. adb -d logcat, ad esempio, consente di visualizzare il log dell'unico dispositivo fisico connesso, mentre adb -e logcat mostra il log dell'unico emulatore in esecuzione.

Per informazioni sugli altri comandi disponibili, immettere adb e leggere i messaggi della Guida.

Scrittura nel log di debug

È possibile scrivere messaggi nel log di debug usando i metodi della classe Android.Util.Log. Ad esempio:

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

Questo codice produce un output simile al seguente:

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

È anche possibile usare Console.WriteLine per scrivere nel log di debug: questi messaggi vengono visualizzati in logcat con un formato di output leggermente diverso (questa tecnica è particolarmente utile durante il debug delle app Xamarin.Forms in Android):

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

Questo codice produce un output simile al seguente in logcat:

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

Messaggi interessanti

Durante la lettura del log (e in particolare quando si forniscono frammenti del log ad altri), analizzare il file di log nella sua interezza risulta spesso troppo oneroso. Per rendere più semplice gli spostamenti tra i messaggi dl log, iniziare cercando una voce di log simile alla seguente:

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

In particolare, individuare la riga corrispondente all'espressione regolare che contiene anche il nome del pacchetto dell'applicazione:

^I.*ActivityManager.*Starting: Intent

Questa è la riga che corrisponde all'inizio di un'attività e la maggior parte dei messaggi successivi (ma non tutti) deve essere correlata all'applicazione.

Si noti che ogni messaggio contiene l'identificatore di processo (PID) del processo che genera il messaggio. Nel messaggio ActivityManager sopra riportato, il processo 12944 ha generato il messaggio. Per individuare il processo dell'applicazione in fase di debug, cercare il messaggio mono.MonoRuntimeProvider:

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

Questo messaggio proviene dal processo che è stato avviato. Tutti i messaggi successivi che contengono questo PID provengono dallo stesso processo.