2012-07-10 5 views
9

私はBluetooth経由でデータを記録しているアプリケーションに取り組んでいますが、何時間ものデータを収集した後に断続的にクラッシュしてしまいます。「送信信号」でアプリが死ぬ例外やその他の情報はありません

logcat出力は非常に有用ではありません。

​​

スローされる例外処理を終了させ何のためノー手がかりはありません。

何が問題になったのか、どうすればわかりますか? logcatによって表示されない例外がスローされていますか?このバグをどのように追跡できますか?

答えて

8

シグナル9はSIGKILLであり、プロセスを直ちに終了します(プロセス内のハンドラは実行されません)。ログ行から、プロセス自体が殺されているので、SIGKILLを発行している外部エージェントではありません。

あなたのプロセス内で実行されているメモリ管理コード(あなたが書いたコードではなく、インフラストラクチャの一部として)は、リソースを使い果たして唯一の手段であると判断していると思います死ぬこの点がログに達する前にもっと多くのメッセージが来ると期待していますので、ログ履歴をブラウジングして、この点より前にプロセスからの有用な警告があるかどうかを調べる価値があります。

この直前の行はGCログです。これは、何らかの種類のメモリリソースが不足していることを意味します。しかし、ヒープがいっぱいではないように見えるので、割り当てが失敗する可能性は低いです。割り当てられているオブジェクトが大きすぎてヒープに収まらない場合や、断片化によって割り当てができなくなった場合でも、割り当て失敗を得ることができます。私はこのケースでは、より関連性の高いログメッセージを表示することを期待しています。

ログのキャプチャは、必要に応じてアプリのPIDでフィルタリングすることで、より多くの情報を取得できると思います。

+3

あなたは間違いなく、私が見落としていたログの初期の情報がありました。ありがとう! – 9us

3

私の場合、ログには警告や手がかりはありませんでした。

結局私は私の問題は、私は
に行っていた活動の一つ(活動Xを言うことができますが)放送受信機に登録したが、それから未登録決してしていることであることがわかりました。混乱を引き起こした - 活動(アクティビティX)を閉鎖し、それに戻ってくることにより

そのためには、同じ放送受信機に再びを登録引き起こしました!

unregisterReceiver(mybroadcast);(アクティビティX)を単に追加すると解決されます。
(私はonDestroyに鉱山を追加しました。right locationで登録を解除してください)。

あなたが超過している場合は、Android crash debuggingあなたのエラーを説明しているこのスライドシェアを見ることをお勧めします。

+0

ありがとうございます。これは私の "例外ではない"問題を解決しなかったが、私が見つけられなかった別の厄介なバグを修正した:) – goodfellow

関連する問題