メモリ不足の状態で発生すると思われる Android アプリケーションの不可解なクラッシュをデバッグしようとしています。問題のアプリのソースは、https://bitbucket.org/stativ/chmupocasiから入手できます。アプリのパッケージはcz.jirkovsky.lukas.chmupocasi
電話のメモリが不足し始め、最近のアプリのリスト (ホームボタンを長押しした後に表示されるもの) からアプリケーションを再度開いてみると、アプリケーションがクラッシュします。
Android Studio を使用してアプリケーションをデバッグしようとしましたが、メイン アクティビティの onCreate() と onStart() のいずれかのブレークポイントに到達する前にアプリケーションが常にクラッシュし、デバッグできなくなります。さらに悪いことに、logcat にも情報が含まれていません。アプリがクラッシュしたときに表示される唯一の関連行は次のとおりです。
I/ActivityManager( 428): Displayed cz.jirkovsky.lukas.chmupocasi/.MainActivity: +1s45ms (total +23m23s835ms)
完全な logcat はhttp://pastebin.com/TtSuqxCWで入手できます。
最後に、Androidのダイアログ「残念ながらアプリケーションが停止しました」が表示されたときに、アプリケーションがクラッシュした後、デバッガをアプリケーションに接続しようとしました。コードがどのスレッドでも実行されていません。「エクスポートスレッド」に含まれるものは次のとおりです。
<1> main@830017304224, prio=5, in group 'main', status: 'RUNNING'
at android.os.BinderProxy.transact(Binder.java:-1)
at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:3147)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:76)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
at dalvik.system.NativeStart.main(NativeStart.java:-1)
<10> Binder_2@830026133152, prio=5, in group 'main', status: 'RUNNING'
at dalvik.system.NativeStart.run(NativeStart.java:-1)
<9> Binder_1@830026131496, prio=5, in group 'main', status: 'RUNNING'
at dalvik.system.NativeStart.run(NativeStart.java:-1)
<8> FinalizerWatchdogDaemon@830026116408 daemon, prio=5, in group 'system', status: 'WAIT'
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:214)
at java.lang.Thread.run(Thread.java:856)
<7> FinalizerDaemon@830026115976 daemon, prio=5, in group 'system', status: 'WAIT'
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:401)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
at java.lang.Thread.run(Thread.java:856)
<6> ReferenceQueueDaemon@830026115560 daemon, prio=5, in group 'system', status: 'WAIT'
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:129)
at java.lang.Thread.run(Thread.java:856)
<5> Compiler@830026115320 daemon, prio=5, in group 'system', status: 'WAIT'
at dalvik.system.NativeStart.run(NativeStart.java:-1)
<3> Signal Catcher@830026114840 daemon, prio=5, in group 'system', status: 'WAIT'
at dalvik.system.NativeStart.run(NativeStart.java:-1)
<2> GC@830026114616 daemon, prio=5, in group 'system', status: 'WAIT'
at dalvik.system.NativeStart.run(NativeStart.java:-1)
メイン スレッドを調べてみると、未処理の例外が ThreadGroup のどこかにあることがわかります。
No such instance field: 'nthreads'
このようなクラッシュをデバッグする方法や、それに関する詳細情報を取得する方法はありますか?