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:
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:
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:
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.