У меня есть приложение, которое отлично работает на устройстве без прикрепленного отладчика. Однако у меня проблема при отладке в Eclipse:
Когда основной поток приостанавливается на 10 секунд или более (например, после удара точки останова), основной поток выдает SIGABRT, по-видимому, исходящий из libc.
Единственное объяснение, о котором я мог думать, состоит в том, что очередь сообщений в основном потоке, когда не выполняется опрос, переполнена сообщениями, поступающими из другого потока. Тем не менее, я не вижу, как куча растет, когда основной поток приостановлен. Более того, хотя мое приложение имеет около 20 потоков между всеми службами, поставщиками контента, широковещательными приемниками, HTTP и рабочими потоками карт и т.д., Я не могу действительно думать о источнике каких-либо чрезмерных сообщений.
Итак, мой вопрос: как мне исправить эту проблему? Какие инструменты я могу использовать, и как мне найти, что приводит к сбою моего приложения во время ожидания приостановления в отладчике?
Изменить 1:
Единственное, что в logcat:
02-05 22:23:54.861: I/dalvikvm(26795): threadid=3: reacting to signal 3
02-05 22:23:54.901: D/dalvikvm(26795): threadid=1: still suspended after undo (sc=1 dc=1)
02-05 22:23:54.901: I/dalvikvm(26795): Wrote stack traces to '/data/anr/traces.txt'
02-05 22:23:58.905: A/libc(26795): Fatal signal 6 (SIGABRT) at 0x000002f5 (code=0), thread 26795 (om.myapp)
Изменить 2:
Дальнейшее исследование заставляет меня поверить, что андроид намеренно убивает мой процесс, потому что он ошибочно считает, что поток пользовательского интерфейса висит. Проблема не в моем приложении. Итак, теперь мой вопрос: как остановить Android от убийства моего процесса во время отладки?