2010-08-12 24 views
19

Sto testando un'applicazione Android con un servizio di lunga durata. Sto usando Eclipse e ho il cavo USB collegato al telefono seduto accanto a me. Poiché si tratta di un lungo servizio in corso, eseguo qualche altro lavoro mentre è in esecuzione e controllo i log di logcat ogni tanto per assicurarmi che tutto funzioni come previsto.Posso ottenere i log di log dopo il riavvio del telefono?

Pochi minuti fa ho notato il riavvio del telefono. Penso che sia già stato fatto prima, in quanto spiegherebbe qualche strano comportamento dell'applicazione. Sono passato rapidamente ad Eclipse per vedere cosa è successo e ho scoperto che il log log è stato (sembra) cancellato durante il riavvio. Quindi non c'è alcun registro se la mia app si è bloccata (e ha preso giù il telefono ?!) o se ci fosse qualche altro problema che ha messo giù il telefono e la mia app.

C'è comunque che posso scoprire cos'è successo? Questo è un telefono di sviluppo, quindi non so se si riavvia/si blocca spesso da solo o solo mentre è in esecuzione la mia app. È un Motorola Droid con firmware versione 2.1-update1.

Grazie per il vostro aiuto.

+0

http://stackoverflow.com/questions/3361230/android-retrieve-logcat-before-crash-reboot-on-a-real-device Se sai come aprire una console sul tuo telefono (scusami I non) allora questo potrebbe aiutarti. È possibile aggiungere il parametro -f e specificare un file in modo che tutti i registri vengano reindirizzati in modo che sia possibile recuperarlo dopo il riavvio. – Mike

+0

Potrebbe non essere specifico per la tua situazione, ma nel caso in cui aiuti qualcuno ... Ho scoperto che usare troppe risorse di sistema può causare reboot spuri che sono difficili da rintracciare tramite i registri. Ad esempio, se hai qualcosa che genera intenti ma non li stai ascoltando (ad esempio, se il tuo thread di ascolto viene bloccato). – Michael

+0

Possibile duplicato di [Android: come ottenere i log del kernel dopo il panico del kernel?] (Https://stackoverflow.com/questions/9682306/android-how-to-get-kernel-logs-after-kernel-panic) –

risposta

15

Non conosco alcun modo per farlo. Tuttavia, è possibile avviare logcat in adb con adb logcat -v time > logcat.txt e quindi eseguire nuovamente l'app. Se si verifica un arresto anomalo una seconda volta, è possibile esaminare l'output di logcat.txt sul proprio computer.

+2

Si noti che le scritture dei file sono memorizzate nel buffer, quindi le ultime parole prima del riavvio potrebbero non essere scaricate sul file. – adamk

+0

@adamk: anche un buon punto. C'è un modo più pulito per farlo (sto indovinando 'adb bugreport')? – eldarerathis

+1

@eldarerathis: avete indovinato giusto :) - L'ho usato un paio di volte, e si è rivelato utile. BTW - l'esecuzione di 'adb shell logcat -f file.txt' potrebbe essere migliore (nel senso del buffering) rispetto al semplice piping che usa la shell, ma in realtà è solo un'ipotesi. – adamk

0

Ho incontrato anche questo problema. Dovrebbe essere possibile scrivere un'app che salva in modo continuo l'output logcat in un file sulla scheda SD. Ci sono app sul mercato che mostrano l'output del logcat, quindi so che è accessibile dall'interno di un'applicazione.

@djv, non sono riuscito a trovare una directory/log in root o/data sul mio telefono.

+0

I registri non sono a livello ed al disco in Android ... sono memorizzati come buffer di memoria circolare. Quindi non persistono dopo il riavvio del telefono. –

+0

@AlexLockwood che non è del tutto corretto (più). dai un'occhiata a https://stackoverflow.com/a/10525021/529977 '/ data/dontpanic' –

+0

Il mio commento è basato sulle informazioni che ho letto in questo libro: http://shop.oreilly.com/product/0636920021094. do Se i registri sono stati scritti costantemente su dispositivi a disco, si comportano in modo molto scadente. Quindi sostengo il mio commento. Inoltre, questa risposta non è più vera poiché le app non sono più in grado di accedere a logcat dall'API 16. –

10

È possibile utilizzare adb bugreport, che dovrebbe contenere alcune informazioni riguardanti un riavvio spuria - per esempio, un kernel panic, ultime iscrizioni logcat ecc

Attenzione, però: questo strumento uscite immense quantità di informazioni, in modo da Dovrò scavare in profondità per trovare quello che ti serve.

+1

Wow. Questo mi ha dato più di 20.000 righe. Sono sicuro che è un'ottima informazione, anche se non so cosa farmene! –

+1

@Scott: inizierei con la ricerca all'interno dell'ID del pacchetto della tua app, dei tag di registro, ecc. Per vedere se c'è qualcosa che riguarda la tua app. – adamk

+0

Sto guardando attraverso ora. Tuttavia, non vedo nulla prima del riavvio. Forse ho aspettato troppo a lungo? Sono trascorse circa due ore dall'ultimo riavvio. –

Problemi correlati