La aplicación de Android se bloquea cuando se inicia en modo de depuración

290

Cuando ejecuto en modo de depuración , la aplicación se bloquea, pero cuando la ejecuto normalmente funciona. Creo que el problema ocurre cuando se adjunta el depurador.

Iniciar sesión:

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
Maxim Rabtsun
fuente
No sé qué pasó, pero ahora funciona. ¡¡¡Magia!!!
Maxim Rabtsun
Me encontré con el mismo problema y fue BS completo. Incluso reiniciar el emulador no ayudó. Después de eliminar un montón de código y luego leerlo en un bloque a la vez, regresé al código original y el problema desapareció. Tengo la sensación de que el objeto de clase solo necesitaba ser reconstruido. Una compilación salió mal. Supongo que un proyecto "limpio" probablemente lo habría solucionado.
Dakusan el
Casi 3 años después, este error todavía está presente.
Attila Tanyi

Respuestas:

321

Para mí, ocurrió cuando tengo un punto de interrupción en una función anidada. En mi caso, estaba dentro Runnable.run() {}. No estoy seguro si sucede en otras funciones anidadas.

Ejemplo:

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

Si hay un punto de interrupción en cualquier línea dentro de la función run (), se bloquea con el error A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() != GetDebugThread() (Thread::Current()=0x########, GetDebugThread()=0x########) Expected event thread.

Este error ocurre la primera vez que se encuentra la clase, NO cuando se alcanza el punto de interrupción. Entonces se me ocurrió cuando entré en una línea que tenía new TouchEvent();, antes de que se ejecutara el código de TouchEvent (antes del constructor).

La solución es eliminar el punto de ruptura (y ponerlo en otro lugar).

Editar:

Olvidé mencionar que parece estar vinculado a API25, pero también se ha informado para API26 y API27.

Editar:

Otra solución es deshabilitar Instant Run , pero otorgue crédito a @ toobsco42 por eso a continuación.

Dakusan
fuente
28
Esto se ha informado en code.google.com y estoy trabajando para solucionarlo allí. code.google.com/p/android/issues/detail?id=227513
Dakusan
44
Tengo SDK 23 y herramientas de compilación 25.0.1 - mismo problema. Eliminar los puntos de interrupción corrige esto.
Bonton255
2
También puede eliminar el punto de interrupción, presionar Depurar, luego, una vez que la aplicación se esté ejecutando correctamente, agréguela nuevamente al lugar que desea. Funciona bien, solo recuerda eliminarlo antes de reiniciar.
cometfish
3
Cambié los emuladores y el problema desapareció, volví al emulador original y el problema volvió. Una vez que el problema aparece, la única forma de superarlo (además de eliminar todos los puntos de interrupción, no, gracias) es deshabilitar la ejecución instantánea. Al volver a habilitar la ejecución instantánea en el emulador de problemas, el problema vuelve a aparecer.
Andy
11
El problema es una mezcla de puntos de interrupción en otros hilos en 7.1.1 con ejecución instantánea. Cambie cualquiera de los 3 anteriores y dejará de fallar.
Warpzit
187

En mi caso tuve que deshabilitar Instant Run. Parece que Instant Run tiene todo tipo de efectos secundarios y este puede ser uno de ellos.

toobsco42
fuente
47
Tenga en cuenta que en Android Studio, se encuentra en Archivo -> Configuración -> Compilación, Ejecución, Implementación -> Ejecución instantánea.
shortstuffsushi
¡También fue mi caso! Gracias: D
francisco_ssb
99
Esa fue una hora de mi vida que nunca volveré a ver
Gary Bak
3
Al trabajar en varias máquinas, con Google constantemente aplicando la ejecución instantánea, lo necesitaría para hacerme aproximadamente un 4216% más eficiente cuando finalmente funcione para acercarme remotamente a recuperar mi tiempo perdido.
Anthony
Muchas gracias. debe marcarse como respuesta;) esta característica fea te da cinco centavos y te desperdicia cien dólares :))
Amir Ziarati
50

El problema está relacionado con la versión 7.x de Android, eliminé todos los puntos de interrupción en las funciones anidadas y funcionó, también probé con la versión 6.0 de Android y funciona sin problemas.

Según la respuesta del equipo de desarrolladores de Google, se solucionó el 1/12/2016 y se aplicará en la próxima versión.

hcknl
fuente
intentado todo lo posible, el comentario anterior ayudó! ¡muchas gracias!
Stepan Maksymov
Funcionó, esta respuesta debe ser aceptada. Gracias ! Además, puede eliminar Instant Run como otra solución
Özer Özcan el
Sería bueno si se adjuntara un enlace para apoyar esto;) "Según la respuesta del equipo de desarrolladores de Google, se solucionó el 1/12/2016 y se aplicará en la próxima versión".
jabu.hlong
Probablemente fue una respuesta por correo electrónico, todavía recibo este error hoy y tuve que eliminar puntos de interrupción
Jim Factor
Android 7.1.1 sigue siendo la versión de Android que se ejecuta en Pixelbook. ¡Esto lo desarrollo todo el tiempo en Android Studio en Pixelbook!
Jeff Lockhart el
21

Eliminé todos los puntos de interrupción y funcionó, probado con Emulator Pixel API 25.

Para eliminar todos los puntos de interrupción:

  • Ir a la opción de depurador.

  • Haga clic en el icono rojo que se encuentra debajo para detener la depuración.

  • Verá una ventana allí donde puede eliminar todos los puntos de interrupción.

Ver más en esta publicación: https://stackoverflow.com/a/42478994/5749462

creonilso rodrigues
fuente
16

Esto se debe a algún problema con los puntos de depuración. Elimine todos los puntos de depuración y luego debería funcionar.

flame3
fuente
3
Puede usar el atajo CTRL + MAYÚS + F8 para desmarcar todos los puntos de interrupción fácilmente.
brunoramonalmeida
Este acceso directo no funciona todo el tiempo dependiendo de la configuración del sistema operativo y del teclado
flame3
8

Es realmente extraño, deshabilité Instant Run y ​​el problema se resolvió por sí solo.

mbpakalin
fuente
Sí, la ejecución instantánea en dispositivos inferiores a Android 7.0 puede causar este problema con bastante facilidad
egorikem el
4

Mi problema era que tenía un punto de interrupción en la declaración de importación

egorikem
fuente
Y me encontré con esto por tercera vez ... Básicamente, cualquier punto de interrupción a veces puede causar esto, por lo tanto, la solución puede ser simplemente eliminar todos / puntos de interrupción recientes
egorikem
3

ingrese la descripción de la imagen aquí

En la ventana 5: Depuración, use el botón "Ver puntos de interrupción"

ingrese la descripción de la imagen aquí

Anular selección de todos

ingrese la descripción de la imagen aquí

Nicoolasens
fuente
1

La solución más simple es tratar de encontrar otro dispositivo o emulador (gracias al Administrador de AVD, tenemos una opción) que funcionará de maravilla sin soluciones

yoAlex5
fuente
1

Mi aplicación también se bloqueó solo cuando estaba en modo de depuración. En cuanto a la versión 3.5: "Ejecución instantánea" se reemplazó con "Aplicar cambios", por lo que no pude desactivarla. Mi solución fue iniciar la aplicación normalmente (con la flecha verde), navegar justo después del lugar donde solía bloquearse y luego adjuntarle el depurador:
ingrese la descripción de la imagen aquí

TDG
fuente
0

Eliminar el punto de interrupción de Runable.run () resolvió el problema por mí. Pude usar puntos de interrupción en tiempo de ejecución dentro de Runable.run (). Pero no en tiempo de compilación

Ankush
fuente
0

Me encontré con este mismo problema, pero mi punto de interrupción fue la primera línea de la función anidada, ¿cómo moverlo a otro lugar?

Creé un método privado temporal e hice una invocación de ese método lo primero en la función y luego establecí el punto de interrupción en ese método.

Cuando terminé de depurar, eliminé el método y su invocación.

bartonstanley
fuente
0

es una posibilidad remota, pero para mí, cuando tengo una declaración de importación que no se está utilizando, y esa importación tiene un código que ejecuta llamadas de red, se bloqueó para mí, pero al eliminarla, el código pudo depurar normalmente.

reidisaki
fuente
0

Comienza a fallar solo cuando se inicia con el depurador. Reinicié Android Studio 2.3.2 ... siguió fallando. Funciona bien en modo Run. Puse un Log.d () justo después de onCreate ... ¡y resolvió el problema! ¡Imagínate!

IrvineCAGuy
fuente
0

Eliminar todos los puntos de depuración en mi aplicación funciona bien, puede usar ctrl + shift + f6 para eliminar todos los puntos de depuración

Arun Prajapati
fuente