2010-08-12 12 views
19

Uzun süredir çalışan bir servisle bir android uygulaması test ediyorum. Eclipse kullanıyorum ve yanımda oturan telefonla USB kablosu takılıyorum. Uzun süren bir hizmet olduğu için, her şeyin beklendiği gibi gittiğinden emin olmak için, bir süre içinde her gün, günlük kayıt defteri günlüklerini çalıştırıp kontrol ederken başka işler yaparım.Telefon yeniden başlatıldıktan sonra logcat günlükleri alabilir miyim?

Birkaç dakika önce telefon rebootlayana ettim. Bazı garip uygulama davranışlarını açıklayacağı için bunu daha önce yaptım. Ne olduğunu görmek için hızlı bir şekilde Eclipse'e geçtim ve logcat günlüğünün yeniden başlatma sırasında temizlendiğini fark ettim. Yani benim app çöktü (ve telefonunu aldı?) Ya da telefon ve benim app aldı başka bir sorun olsaydı bir günlüğü yok.

Ne olduğunu bulabilirsiniz yine de var mı? Bu bir geliştirme telefonudur, bu yüzden tek başına veya tek başına uyguladığım sırada yeniden başlatılıp başlatılmadığını bilmiyorum. Bu, Firmware sürüm 2.1-update1 çalışan bir Motorola Droid. Yardımlarınız için

teşekkürler.

+0

http://stackoverflow.com/questions/3361230/android-retrieve-logcat-before-crash-reboot-on-a-real-device telefonunuza bir konsolu açmak biliyorsanız (üzgünüm Yapma o zaman bu size yardımcı olabilir. -f parametresini ekleyebilir ve tüm günlüklerin pipetlenmesini sağlayacak bir dosya belirtebilirsiniz, böylece yeniden başlatmanın ardından alabilirsiniz. – Mike

+0

Durumunuza özel olmayabilir, ama birilerine yardımcı olursa ... Ben çok fazla sistem kaynağı kullanarak buldum logları ile izlemesi zor olan sahte yeniden başlatmalara neden olabilir. Örneğin, bir şey üretme Intents'i ama onları dinlerken değilse arasında – Michael

+0

Olası kopyası (Dinleme parçacığı bloke alırsa, örneğin.) [Android: Çekirdek panik sonra çekirdek günlükleri almak nasıl?] (https:/dosya yazma tamponlu, bu nedenle yeniden başlatmadan önce en son kelime dosyaya temizlenip olmayabilir /stackoverflow.com/questions/9682306/android-how-to-get-kernel-logs-after-kernel-panic) –

cevap

15

Bunu yapmak için herhangi bir yol bilmiyorum. Ancak, adb logcat -v time > logcat.txt ile adb oturumunu başlatıp uygulamanızı tekrar çalıştırabilirsiniz. Eğer ikinci kez çökerse, makinenizdeki logcat.txt çıkışına bakabilirsiniz.

+2

Not. – adamk

+0

@adamk: Ayrıca iyi bir nokta. Bunu yapmak için daha temiz bir yol var mı ('adb bugreport' tahmin ediyorum)? – eldarerathis

+1

@eldarerathis: Doğru tahmin ettiniz :) - Birkaç kez kullandım ve yararlı oldu. BTW - 'adb shell logcat -f file.txt' komutunu çalıştırmak sadece kabuk kullanarak piping yapmaktan daha iyi olabilir (tamponlama anlamında), fakat bu gerçekten sadece bir tahmin. – adamk

0

Bu soruna da girdim. Logcat çıktısını SD karttaki bir dosyaya sürekli kaydeden bir uygulama yazmak mümkün olmalıdır. Piyasada logcat çıktısını görüntüleyen uygulamalar var, bu yüzden bir uygulama içinden erişilebilir olduğunu biliyorum.

@djv, benim telefonda kök veya/veri ya bir/log dizini bulmak mümkün değildi.

+0

Günlükler floş değil Android'de diske edildiler ... onlar dairesel bellek arabellekleri olarak saklanır. Böylece telefonunuz yeniden başlatıldıktan sonra devam etmeyecekler. –

+0

@AlexLockwood bu doğru değil (artık). https://stackoverflow.com/a/10525021/529977 de bakabilirsiniz '//dontpanic' –

+0

Yorumum veri Ben bu kitapta okunan bilgilere dayanıyordu: http://shop.oreilly.com/product/0636920021094. Eğer günlükler sürekli olarak disk cihazlarına yazılıyorsa, çok kötü performans gösterecektir. Bu yüzden yorumuma dayanıyorum. Ayrıca API 16'dan bu yana artık logcat'e erişemediği için bu cevap kesinlikle doğru değil. –

10

Bazı sahte yeniden başlatma ile ilgili bilgi içermelidir adb bugreport kullanabilirsiniz - gerçi

uyardı vb örneğin, bir çekirdek panik, son logcat girdileri,: Bunu, bu aracı bilgilerinin çıkışları muazzam miktarlarda İhtiyacın olanı bulmak için derine inmek zorundayım.

+1

Wow. Bu bana 20.000'den fazla hat verdi. Eminim bu harika bir bilgi, bununla ne yapacağımı bilmeme rağmen! –

+1

@Scott: Uygulamanızla ilgili herhangi bir şey olup olmadığını görmek için uygulamanızın paket kimliğini, günlük etiketlerini vb. – adamk

+0

Şimdi bakıyorum. Yine de, yeniden başlatmadan önce hiçbir şey göremiyorum. Belki çok bekledim? Son yeniden başlatmadan yaklaşık iki saat geçti. –

İlgili konular