Androidアプリ「ロイド」の不具合を調べていたとき、困ったことがありました。
見たいログが、どんどん流れてどこかへ行ってしまう。
Android Emulatorでは大量のログが出続けます。
問題が起きた瞬間を確認しようとしても、その後に出てきたログに押し流されてしまい、「さっきのログどこいった?」となることがありました。
そこで使ったのが、ADBでLogcatをファイルへ保存する方法です。
adb logcat > logcat.txt
これを実行してからテストを始めると、Logcatが画面に流れて終わるのではなく、logcat.txtへ連続して保存されます。
テストが終わったら Ctrl + C で停止。
これなら問題が起きた瞬間だけではなく、その前に何が起きていたのかまで後から確認できます。
なぜ「全部保存」にしたのか
最初から怪しいログだけに絞れば、確かに見やすくなります。
でも原因が分かっていない段階では、
何が重要なログなのかも、まだ分かりません。
そこで先に全部保存して、必要なところを後から探す方法にしました。
実際、この方法でロイドが突然終了した前後のログを残すことができました。
そして調べていくと、アプリ内部の普通のエラーで落ちたのではなく、Androidの LMKD(Low Memory Killer Daemon)によってプロセスが終了させられていたことまで確認できました。
得られたもの
一番大きかったのは、ログそのものよりも調査方法でした。
問題が起きた瞬間だけを見るのではなく、発生前からログを残しておく。
そして、
全部取る → 問題が起きる → 後から絞る。
大量のLogcatに苦しめられた結果、このやり方にたどり着きました。
ログの波に流されていった犯人を探すより、最初から波ごと捕まえてしまえばいい。
今後のAndroid開発でも使えそうです。



コメントを残す