Gdy uruchamiam w trybie debugowania , aplikacja ulega awarii, ale gdy uruchamiam ją normalnie, działa. Myślę, że problem występuje, gdy podłączony jest debugger.
Log:
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
android
android-studio
debugging
android-debug
android-debugging
Maxim Rabtsun
źródło
źródło
Odpowiedzi:
Dla mnie miało to miejsce, gdy mam punkt przerwania w zagnieżdżonej funkcji. W moim przypadku było w środku
Runnable.run() {}
. Nie jestem pewien, czy dzieje się tak w przypadku innych zagnieżdżonych funkcji.Przykład:
Jeśli w dowolnym wierszu functu run () znajduje się punkt przerwania, następuje awaria z błędem
A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event thread
.Ten błąd występuje przy pierwszym napotkaniu klasy, NIE przy trafieniu punktu przerwania. Tak mi się zdarzyło, gdy wszedłem do linii, która istniała
new TouchEvent();
przed uruchomieniem kodu TouchEvent (przed konstruktorem).Rozwiązaniem jest usunięcie punktu przerwania (i umieszczenie go w innym miejscu).
Edytować:
Zapomniałem wspomnieć, wydaje się, że jest on powiązany z API25, ale został zgłoszony również dla API26 i API27.
Edytować:
Innym rozwiązaniem jest wyłączenie Instant Run , ale proszę dać @ toobsco42 kredyt za to poniżej.
źródło
W moim przypadku musiałem wyłączyć Instant Run. Wygląda na to, że Instant Run ma wiele efektów ubocznych i może to być jeden z nich.
źródło
Problem związany jest z Androidem w wersji 7.x, usunąłem wszystkie punkty przerwania w zagnieżdżonych funkcjach i działał, testowałem również z Androidem w wersji 6.0 i działa bez problemu.
Według odpowiedzi zespołu programistów Google, zostało to naprawione 12/1/2016 i zostanie zastosowane w następnej wersji.
źródło
Usunąłem wszystkie punkty przerwania i zadziałało, przetestowane z Emulator Pixel API 25.
Aby usunąć wszystkie punkty przerwania:
Przejdź do opcji Debugger.
Kliknij czerwoną ikonę poniżej, aby zatrzymać debugowanie.
Zobaczysz okno, w którym możesz usunąć wszystkie punkty przerwania.
Zobacz więcej w tym poście: https://stackoverflow.com/a/42478994/5749462
źródło
Jest to spowodowane pewnym problemem z punktami debugowania. Usuń wszystkie punkty debugowania, a następnie powinno działać.
źródło
To naprawdę dziwne, wyłączyłem Instant Run i problem sam się rozwiązał.
źródło
Mój problem polegał na tym, że miałem punkt przerwania na wyciągu z importu
źródło
W oknie 5: Debugowanie użyj przycisku „Zobacz punkty przerwania”
Odznacz wszystkie z nich
źródło
Najprostszym rozwiązaniem jest znalezienie innego urządzenia lub emulatora (dzięki AVD Manager mamy wybór), który będzie działał jako urok bez obejść
źródło
Moja aplikacja również uległa awarii tylko w trybie debugowania. Jeśli chodzi o wersję 3.5 - „Instant Run” został zastąpiony przez „Apply Changes”, więc nie mogłem go wyłączyć. Moim rozwiązaniem było normalne uruchomienie aplikacji (z zieloną strzałką), nawigacja tuż po miejscu, w którym się zawiesiła, a następnie dołączenie do niej debuggera:
źródło
Usunięcie punktu przerwania z Runable.run () rozwiązało problem dla mnie. Byłem w stanie używać punktów przerwania w czasie wykonywania wewnątrz Runable.run (). Ale nie w czasie kompilacji
źródło
Wystąpił ten sam problem, ale mój punkt przerwania był pierwszym wierszem w funkcji zagnieżdżonej, więc jak przenieść go w inne miejsce?
Utworzyłem tymczasową metodę prywatną i najpierw wywołałem tę metodę, a następnie ustawiłem punkt przerwania w tej metodzie.
Po zakończeniu debugowania usunąłem metodę i jej wywołanie.
źródło
jest to dalekie ujęcie, ale dla mnie, gdy mam nieużywaną instrukcję importu, a ten import zawiera kod, który uruchamia połączenia sieciowe, zawiesił się dla mnie, ale po jego usunięciu kod mógł normalnie debugować.
źródło
Zaczyna się zawieszać tylko podczas uruchamiania z debuggera. Ponownie uruchomiłem Android Studio 2.3.2 ... ciągle się zawieszał. Działa dobrze w trybie uruchamiania. Włączyłem Log.d () zaraz po onCreate ... i to rozwiązało problem! Domyśl!
źródło
Usuń wszystkie punkty debugowania w mojej aplikacji działa dobrze, możesz użyć kombinacji klawiszy Ctrl + Shift + F6, aby usunąć wszystkie punkty debugowania
źródło