Запуск програми Android під час запуску в режимі налагодження


290

Коли я запускаюсь у режимі налагодження, програма виходить з ладу, але коли я просто запускаю її нормально, вона працює. Я думаю, що проблема трапляється, коли налагоджувач додається.

Журнал:

A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x7f44a18400, GetDebugThread()=0x7f44a18400) Expected event thread
A/art: art/runtime/runtime.cc:422] Runtime aborting...
A/art: art/runtime/runtime.cc:422] Aborting thread:
A/art: art/runtime/runtime.cc:422] "JDWP" prio=5 tid=4 WaitingForDebuggerSend
A/art: art/runtime/runtime.cc:422]   | group="" sCount=0 dsCount=0 obj=0x12c60280 self=0x7f44a18400
A/art: art/runtime/runtime.cc:422]   | sysTid=24137 nice=0 cgrp=default sched=0/0 handle=0x7f4b904450
A/art: art/runtime/runtime.cc:422]   | state=R schedstat=( 132066712 16401043 106 ) utm=9 stm=2 core=3 HZ=100
A/art: art/runtime/runtime.cc:422]   | stack=0x7f4b80a000-0x7f4b80c000 stackSize=1005KB
A/art: art/runtime/runtime.cc:422]   | held mutexes= "abort lock"
A/art: art/runtime/runtime.cc:422]   native: #00 pc 000000000047e2cc  /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+220)
A/art: art/runtime/runtime.cc:422]   native: #01 pc 000000000047e2c8  /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+216)
A/art: art/runtime/runtime.cc:422]   native: #02 pc 0000000000452434  /system/lib64/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+480)
A/art: art/runtime/runtime.cc:422]   native: #03 pc 00000000004403ac  /system/lib64/libart.so (_ZNK3art10AbortState10DumpThreadERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE+56)
A/art: art/runtime/runtime.cc:422]   native: #04 pc 0000000000440228  /system/lib64/libart.so (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+668)
A/art: art/runtime/runtime.cc:422]   native: #05 pc 0000000000433bfc  /system/lib64/libart.so (_ZN3art7Runtime5AbortEPKc+148)
A/art: art/runtime/runtime.cc:422]   native: #06 pc 00000000000e597c  /system/lib64/libart.so (_ZN3art10LogMessageD2Ev+1592)
A/art: art/runtime/runtime.cc:422]   native: #07 pc 00000000002f8458  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState24AcquireJdwpTokenForEventEm+624)
A/art: art/runtime/runtime.cc:422]   native: #08 pc 00000000002f7b1c  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState29SendRequestAndPossiblySuspendEPNS0_9ExpandBufENS0_17JdwpSuspendPolicyEm+248)
A/art: art/runtime/runtime.cc:422]   native: #09 pc 00000000002fcb08  /system/lib64/libart.so (_ZN3art4JDWP9JdwpState16PostClassPrepareEPNS_6mirror5ClassE+1380)
A/art: art/runtime/runtime.cc:422]   native: #10 pc 0000000000124a9c  /system/lib64/libart.so (_ZN3art11ClassLinker11DefineClassEPNS_6ThreadEPKcmNS_6HandleINS_6mirror11ClassLoaderEEERKNS_7DexFileERKNS9_8ClassDefE+804)
A/art: art/runtime/runtime.cc:422]   native: #11 pc 0000000000381d04  /system/lib64/libart.so (_ZN3artL25DexFile_defineClassNativeEP7_JNIEnvP7_jclassP8_jstringP8_jobjectS7_S7_+344)
A/art: art/runtime/runtime.cc:422]   native: #12 pc 00000000001dd40c  /system/framework/arm64/boot-core-libart.oat (???)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.defineClassNative(Native method)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.defineClass(DexFile.java:296)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:289)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.DexPathList.findClass(DexPathList.java:418)
A/art: art/runtime/runtime.cc:422]   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
A/art: art/runtime/runtime.cc:422]   at com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader.findClass(IncrementalClassLoader.java:90)
A/art: art/runtime/runtime.cc:422]   at com.android.tools.fd.runtime.IncrementalClassLoader.findClass(IncrementalClassLoader.java:62)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:367)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:367)
A/art: art/runtime/runtime.cc:422]   at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
A/art: art/runtime/runtime.cc:422] Dumping all threads without appropriate locks held: thread list lock mutator lock

Я не знаю, що сталося, але зараз працюю. Магія !!!
Максим Рабцун

Я зіткнувся з тією ж проблемою, і це була повна BS. Навіть перезавантаження емулятора не допомогло. Вилучивши купу коду, а потім прочитавши його в одному блоці за один раз, я повернувся до початкового коду і проблеми не було. У мене є відчуття, що об’єкт класу просто потребував відновлення. Збірка пішла не так. Я здогадуюсь, проект "чистий", мабуть, це би виправив.
Дакусан

Майже через 3 роки цей клоп все ще присутній.
Аттіла Таній

Відповіді:


321

Для мене це сталося, коли я маю точку розриву вкладеної функції. У моєму випадку це було всередині Runnable.run() {}. Не впевнений, чи трапляється це в інших вкладених функціях.

Приклад:

public class TouchEvent {
    public boolean HandleEvent(MotionEvent Event) {
        new Runnable() { @Override public void run() {
            int i=5;
            i++;
        }};
    }
}

Якщо в будь-якому рядку всередині функції run () є точка розриву, вона збивається з помилкою A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event thread.

Ця помилка виникає при першому зустрічі класу, НЕ при попаданні точки перелому. Так у мене вийшло new TouchEvent();, коли я перейшов до рядка, який мав до запуску будь-якого коду TouchEvent (перед конструктором).

Рішення - зняти точку злому (і поставити її в іншому місці).

Редагувати:

Забув згадати, він, мабуть, пов'язаний з API25, але повідомлялося також про API26 та API27.

Редагувати:

Іншим рішенням є відключення миттєвого запуску , але, будь ласка, надайте @ toobsco42 кредит для цього нижче.


28
Про це повідомлялося на code.google.com, і я працюю над тим, щоб виправити це. code.google.com/p/android/isissue/detail?id=227513
Дакусан

4
У мене є sdk 23 та інструменти для збирання 25.0.1 - та сама проблема. Видалення кінцевих точок усуває це.
Bonton255

2
Ви також можете видалити точку розриву, натиснути налагодження, а після запуску програми добре додати його до потрібного місця. Тоді все добре, просто не забудьте видалити його перед перезавантаженням.
комета

3
Я переключив емулятори, і проблема пішла - повернувся до оригінального емулятора і проблема повернулася. Як тільки проблема з’являється, єдиним способом її подолання (крім очищення всіх точок перерви - немає подяки) є відключення миттєвого запуску. Повторне включення миттєвого запуску на емуляторі проблеми повертає проблему.
Енді

11
Проблема полягає в поєднанні точок перерви в інших потоках 7.1.1 з миттєвим запуском. Тож змініть будь-який із наведених вище 3, і він перестане виходити з ладу.
Warpzit

187

У моєму випадку мені довелося вимкнути функцію миттєвого запуску. Здається, що у «Моментального запуску» є всілякі побічні ефекти, і це може бути одним із них.


47
Зауважте, що в Android Studio це знаходиться в розділі Файл -> Налаштування -> Збірка, виконання, розгортання -> Миттєвий запуск.
shortstuffsushi

Це був і мій випадок! Спасибі: D
francisco_ssb

9
Це була година мого життя, яку я більше ніколи не побачу
Гері Бак

3
Працюючи на декількох машинах, і Google постійно застосовує миттєвий запуск, мені це потрібно, щоб зробити мене приблизно на 4216% ефективнішим, коли він, нарешті, працює віддалено наблизитися до повернення втраченого часу.
Ентоні

подякуй так чорт багато. слід поставити галочку як відповідь;) ця потворна функція дає вам п’ять центів і витрачає вам сто доларів :))
Амір Зіараті

50

Проблема пов'язана з Android версією 7.x, я видалив усі точки перешкод у вкладених функціях, і вона спрацювала, протестувалась і з версією Android 6.0, і вона працює без проблем.

Відповідно до відповіді команди розробників google, це було зафіксовано 01.12.2016 та буде застосовано у наступному випуску.


спробував усе можливе, вище коментар допоміг! дуже дякую!
Степан Максимов

Це спрацювало, на це слід прийняти відповідь. Дякую ! Також ви можете видалити миттєвий запуск як інше рішення
Özer Özcan

Було б добре, якби було додано посилання для підтримки цього;) "Відповідно до відповіді команди розробників google, це було зафіксовано 12.12.2016 та буде застосовано в наступному випуску."
jabu.hlong

Ймовірно, був відповідь електронною поштою, все-таки отримуючи цю помилку сьогодні, і довелося видалити точки прориву
Джим Фактор

Android 7.1.1 все ще є версією Android, що працює на Pixelbook. Я отримую це постійно розвиваючись в Android Studio на Pixelbook!
Джефф Локхарт

21

Я видалив усі точки пробою, і це спрацювало, протестувавшись з Emulator Pixel API 25.

Щоб видалити всі точки прориву:

  • Перейдіть до опції налагодження.

  • Клацніть на червоній піктограмі, яка знизу зупинена.

  • Ви побачите там вікно, з якого можна видалити всі точки прориву.

Детальніше дивіться у цьому дописі: https://stackoverflow.com/a/42478994/5749462


16

Це пов’язано з певною проблемою з налагодженнями. Видаліть усі точки налагодження, і тоді це повинно працювати.


3
Ви можете використовувати ярлик CTRL + SHIFT + F8, щоб легко відмітити всі точки прориву.
брунорамоналмейда

Цей ярлик не працює весь час залежно від налаштувань вашої ОС та клавіатури
flame3

8

Це дійсно дивно, я відключив функцію Instant Run і проблема вирішилася сама собою.


Так, миттєвий запуск на пристроях під Android 7.0 може спричинити цю проблему досить легко
egorikem

4

Моє питання полягало в тому, що у мене була заява на перерву в заяві про імпорт


І натрапив на це як третій раз ... В основному, будь-яка точка розриву іноді може спричинити це, тому рішенням може бути просто зняти всі / останні точки
прориву

3

введіть тут опис зображення

У вікні 5: Налагодження, використовуйте кнопку "Переглянути точки перерви"

введіть тут опис зображення

Зняти вибір з них

введіть тут опис зображення


1

Найпростішим рішенням є спроба знайти інший пристрій чи емулятор (завдяки AVD Manager у нас є вибір), який буде працювати як шарм без обхідних шляхів


1

Мій додаток також вийшов з ладу лише в режимі налагодження. Щодо версії 3.5 - "Миттєвий запуск" було замінено на "Застосувати зміни", тому я не зміг її відключити. Моє рішення полягало в тому, щоб нормально запустити додаток (із зеленою стрілкою), перейдіть безпосередньо за місцем, в якому воно перебувало, і потім приєднати налагоджувач до нього:
введіть тут опис зображення


0

Видалення точки зламу з Runable.run () вирішило проблему для мене. Мені вдалося використовувати точки прориву під час виконання всередині Runable.run (). Але не під час компіляції


0

Потрапив у цю саму проблему, але моя точка перелому була першим рядком у вкладеній функції, тож як її перемістити в інше місце?

Я створив тимчасовий приватний метод і зробив виклик цього методу першим ділом у функції, а потім встановив точку розриву в цьому методі.

Коли я закінчив налагодження, я видалив метод та його виклик.


0

це тривалий знімок, але для мене, коли у мене є заява про імпорт, яка не використовується, і в імпорті є код, який виконує мережеві дзвінки, він зазнав аварії для мене, але, видаляючи його, код зміг нормально налагодити.


0

Початок збоїв тільки при запуску з налагоджувачем. Перезавантажена Android Studio 2.3.2 ... продовжувала збої. Відмінно працює в режимі запуску. Я помістив Log.d () відразу після onCreate ... і це усунуло проблему! Піди розберися!


0

Видалити всі точки налагодження у моїй програмі працює добре, ви можете використовувати ctrl + shift + f6, щоб видалити всі точки налагодження

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.