Android Fatal signal 11(SIGSEGV)at 0x636f7d89(code = 1)。どのように追跡できますか?
私はSIGSEGV、Androidアプリでを取得する理由を追跡することに関する他の投稿を読んでいます。Canvasの使用に関連するNullPointersを探すためにアプリを精査する予定ですが、SIGSEGV毎回異なるメモリアドレスを調べます。プラス私が見てきたcode=1とcode=2。メモリアドレスがだった場合0x00000000、私はそれがNullPointerであるという手掛かりを得るでしょう。 私が手に入れた最後のものはcode=2: A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2) これを追跡する方法に関する提案はありますか? 私には容疑者がいますが、まだ実験に熱心ではありません。私のアプリは、オフラインマッピングにOSMDroid APIを使用しています。OverlayItemクラスは、マップ上のマーカー/ノードを表します。ネットワークを介してデータを収集し、OverlayItemに入力するサービスがあります。これは、マップに表示されます。デザインを簡略化するために、OverlayItemを自分のNodeOverlayItemクラスに拡張しました。これには、UIアクティビティとサービスで使用する追加の属性がいくつか含まれています。これにより、UIとサービスのアイテム情報が一元化されました。インテントを使用してアクティビティにブロードキャストし、何かが変更されたときにUIマップを更新しました。アクティビティはサービスにバインドし、NodeOverlayItemのリストを取得するためのServiceメソッドがあります。OSMDroid APIのOverlayItemの使用かもしれません。と私のサービスは同時にノード情報を更新します。(同時実行の問題) これを書いていると、それが本当に問題だと思います。頭痛の種は、NodeOverlayItemからNodeとOverlayItemを分けているのではなく、Serviceが保持するのは、アクティビティがノードからのデータを必要とするということです。さらに、アクティビティが作成されるとき(onResumeなど)、OverlayItemオブジェクトは、アクティビティが存在しないときにサービスが維持していたノードデータから再作成する必要があります。たとえば、アプリを起動すると、サービスがデータを収集し、UIがそれを表示し、ホームに戻ってアプリに戻ります。アクティビティは、最新のサービスノードデータからOverlayItemをプルして再作成する必要があります。 これは素晴らしい質問でも明確な質問でもありません。それは私のすべてのSOの質問がニッチまたはあいまいであるようです。誰かがこれらのSIGSEGVエラーを解釈する方法について提案があれば、それは大歓迎です! 更新これ は、デバッグセッション中にキャプチャされた最新のクラッシュです。私はこれらのデバイスのうち3つをテストに使用していますが、開発およびテスト中にすべてが確実にクラッシュするわけではありません。GCのログを記録できるように、少しだけ余分に追加しました。問題はおそらくメモリの枯渇に関連していないことがわかります。 03-03 02:02:38.328: I/CommService(7477): Received packet from: 192.168.1.102 03-03 02:02:38.328: I/CommService(7477): Already processed this packet. It's a re-broadcast from another node, or from myself. It's not a repeat broadcast though. 03-03 02:02:38.406: D/CommService(7477): …