La aplicación de depurador de Android Studio se bloquea con InterruptedException
Mientras trabajaba hoy, parecía como si de repente ya no pudiera depurar nuestra aplicación. Lo curioso es que si ejecutaba la aplicación normalmente funcionaría bien. Para aclarar, estaba corriendo el depurador toda la mañana sin incidentes (aparte de la falla ocasional o accidente). Luego, después del almuerzo comenzó a fallar el 100% del tiempo. Por supuesto, he estado haciendo cambios todo el día, de ahí el "parece" de arriba. Así pues, aquí están algunos detalles relevantes:
-
Android Studio 2.1.1 (28 de abril de 2016)
- ¿Cómo depurar un broadcastreceiver?
- Cómo habilitar la salida de depuración en el vinculador dinámico en Android?
- Android - ¿Las llamadas LogCat son visibles para los usuarios finales si el teléfono está en modo de depuración?
- Error: Error de ejecución para la tarea ': app: transformClassesAndResourcesWithProguardForDebug'
- / Dev / log / main no encontrado
-
Esta aplicación se inicia con una pantalla de inicio de sesión. El usuario debe entonces autenticarse con un nombre de usuario / contraseña que llama a un servicio externo.
-
Puedo llegar a la pantalla de inicio de sesión, pero la aplicación siempre se bloquea en el mismo punto en el centro de la autenticación.
Aquí está el rastreo de la pila:
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/Crashlytics: Failed to execute task. java.lang.InterruptedException at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:375) at java.util.concurrent.FutureTask.get(FutureTask.java:162) at com.crashlytics.android.va(SourceFile:1936) at com.crashlytics.android.v.uncaughtException(SourceFile:307) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) 05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1 Process: com.mycomp.myapp.test, PID: 2399 java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1991) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2025) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:820)
Aquí están las cosas que he intentado arreglarlo:
- Retirar todos mis cambios (git stash)
- Desinstalar la aplicación del teléfono
- Hacer una compilación limpia
- Hacer un proyecto de Gradle Resync
- Eliminar todos los puntos de interrupción (en serio?)
- Ok, he estado agregando puntos de interrupción por todas partes para ver cómo funcionan las cosas, así que ¿quién sabe? Hay algún mérito allí.
- ¡Reinicie Android Studio! (Apagarlo y encenderlo de nuevo)
Y hasta ahora, nada funciona. Sin embargo, no puedo enfatizar lo suficiente que si acabo de ejecutar la aplicación (botón de reproducción, ^ R) y ejecutarlo en el mismo dispositivo, funciona muy bien! Inicie sesión sin ningún problema. Por lo tanto, no parece ser un problema de código.
Además, si nos fijamos en el seguimiento de pila, no hay nada que apunte a nuestro proyecto.
¿Algunas ideas?
- Android de depuración con Logcat y Emulador. ¿Es posible?
- La mejor manera de depurar los mensajes de error de actualización
- Usb atar y depurar al mismo tiempo
- La aplicación se ha detenido de forma inesperada: ¿Cómo depurar?
- ¿Cómo desconectar su teléfono de forma segura cuando lo conecta para depurar a través de Eclipse?
- ¿El depurador de Android trunca mensajes de depuración?
- Gradle lanzamiento de construcción todavía debuggable?
- Android: Cómo deshabilitar la depuración para subir el apk
Bueno, lo averigüé. Resulta que tenía un "Java Field Watchpoint" seleccionado con "Suspend Thread" como una de las opciones. Ver la captura de pantalla adjunta para aclaración. Comida para llevar:
Como puedes ver, yo había estado usando un montón de puntos de interrupción, por lo que se enterró en la ventana y no lo vi.
Todavía no sé cómo se puso. Había estado usando relojes un día anterior, pero los había borrado todos. Además, estoy seguro de que no lo encendí, así que cómo misteriosamente dejó de funcionar en medio del día sigue siendo un misterio. Además, ciertamente no habría comprobado "suspender el hilo" por mi cuenta. ¿Algún tipo de configuración predeterminada?
El punto sigue siendo – si usted está viendo rastros extraños de la pila, puede ser bueno comprobar todos los puntos de interrupción y mirar ajustes del punto.
Espero que esto ayude a alguien.
Instant Ejecutar parece ser el culpable (al menos en mi caso con Android Studio 2.3.3). En lugar de desactivar los puntos de interrupción, intente desactivar la ejecución instantánea. Una vez que hice esto, los puntos de interrupción dejaron de causar accidentes.
Ver fallos de aplicación de Android cuando se inicia en modo de depuración para obtener más información. Bajo Mac OS X, desactivé la ejecución instantánea yendo a Android Studio-> Preferencias-> Creación, Ejecución, Implantación-> InstantRun y desmarcando "Activar Instant Ejecutar a hot swap …".
¿Hay un problema con Instant Run? En el panel de configuración. Hice clic en "Reactivar y activar el registro extra", reprodujo el error y, a continuación, informó de inmediato utilizando la opción "Ayuda – Informe Instant Ejecutar problema …" como lo pidieron.