Подтвердить что ты не робот

Android-приложение вылетает с сигналом SIGABRT 6 только при отладке Eclipse

У меня есть приложение, которое отлично работает на устройстве без прикрепленного отладчика. Однако у меня проблема при отладке в 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 от убийства моего процесса во время отладки?

4b9b3361

Ответ 1

андроид намеренно убивает процесс, потому что он считает, что поток пользовательского интерфейса висит, поэтому его ANR право. для целей отладки, вы можете,

Перейдите в Настройки → Параметры разработчика и установите флажок Показать все ANR.

Появится диалоговое окно App Not Responseing для приложений, работающих в фоновом режиме. Вы можете нажать кнопку "Ожидание" в диалоговом окне, чтобы система не убивала ваш процесс до приставки отладчика. Обратите внимание, что диалог открывается автоматически для приложений, работающих на переднем плане. Для фоновых приложений вы должны включить эту опцию

Ответ 2

Это началось со мной в android 7.1.1

При подключении отладчика мое приложение всегда разбилось, то же самое, когда приложение запускалось в режиме отладки.

То, что исправлено для меня, просто:

  • Запустите приложение
  • Нажмите "Отключить точки останова" в Debug
  • Прикрепите отладчик
  • Повторно нажмите "Mute Breakpoints" для включения функции
  • Готово, снова отладка

Ответ 3

У меня были аналогичные проблемы, но то, что предложил Сэм, не помогло - я должен был ОСНОВАЛ удалить точки останова, а затем это сработало для меня.