¿Cómo establezco correctamente un punto de interrupción de excepción en Android Studio?

He estado tratando durante meses para conseguir mi depurador para romper en mi propio código, sin éxito. Cada excepción sin capturar se rompe en el método ZygoteInit.run ().

Aquí hay una lista de acciones que he tomado.

  1. Se agregó debug { debuggable true } al archivo build.gradle de mi módulo de aplicación
  2. Agregado manualmente debuggable="true" a mi archivo AndroidManifest.xml
  3. Marcó la casilla de verificación Any exception en la ventana Puntos de interrupción
  4. Se agregaron patrones de filtro de clase relevantes al punto de ruptura Any exception
    • Esto hace que el depurador salte completamente todas las excepciones no detectadas

He estado depurando mirando el rastro de la pila en Logcat, que demuestra mis clases en el rastro de la pila.

He visto esta versión en compilaciones actuales y anteriores en los canales estables y canarios.

¿Hay algo aquí que me falta?

EDIT: Sólo para aclarar para la gente, el problema era que tenía la caja "Caught excepción" sin marcar. El marcar esta casilla solucionó mi problema.

Aquí está la parte relevante de mi archivo Gradle, si ayuda en absoluto.

 android { compileSdkVersion 22 buildToolsVersion '22.0.0' defaultConfig { applicationId "com.--redacted--" minSdkVersion 15 targetSdkVersion 22 versionCode 30 versionName "0.0.30" multiDexEnabled true } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/beans.xml' } buildTypes { debug { debuggable true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { javaMaxHeapSize "4g" } } 

Aquí hay una captura de pantalla de mi ventana Breakpoints.

Ventana Breakpoints

2 Solutions collect form web for “¿Cómo establezco correctamente un punto de interrupción de excepción en Android Studio?”

Un par de cosas más para asegurar:

  • Suspender establecido en todos
  • Notificaciones en:
    • Se captura la excepción si se van a capturar las excepciones que tienen el tratamiento de errores definido
    • Excepciones no captadas si las excepciones que no se manejan deben ser capturadas
  • Establezca los filtros de clase para restringir para incluir sólo su código, código de Android y código de Java.

Vea instrucciones más detalladas aquí: https://stackoverflow.com/a/28862538/3063884

Diálogo de puntos de interrupción

Este enfoque captura todas las excepciones que se plantean (cuando se capturan y se capturan no capturados). Así se levantan todas las excepciones internas. La especificación de un filtro de clase restringe esto al excluir algunas de estas excepciones. Por ejemplo, en el volcado de pantalla anterior, el ClassNotFoundException , que se plantea con frecuencia durante la puesta en marcha, se ignora.

Un pequeño inconveniente de este enfoque es que durante el inicio de la aplicación, puede haber un mensaje que indique "No se puede encontrar la clase de origen para el marco de pila actual". Esto se debe a que no se ha cargado todo el código fuente todavía. Esto sólo se producirá una vez durante el arranque y se puede ignorar con seguridad. Un enfoque alternativo para evitar esto (si no hay excepciones esperadas durante la puesta en marcha de la aplicación) es 'Ejecutar' correr La aplicación (en lugar de iniciar 'Debug') y, a continuación, adjuntar manualmente la aplicación al depurador mediante Ejecutar -> Adjuntar depurador al proceso de Android … o pulsando el botón Adjuntar En la barra de herramientas.

Debe adjuntar el depurador a un proceso en ejecución

No siempre tienes que reiniciar tu aplicación para depurarla.
Para depurar una aplicación que ya estás ejecutando:

  1. Haga clic en Adjuntar depurador al proceso de Android
  2. En la ventana Elegir proceso, seleccione el dispositivo y la aplicación a los que desea adjuntar el depurador
  3. Para abrir la ventana de la herramienta Depurar, haga clic en Depurar

    To view and configure the breakpoints settings, click View Breakpoints on the left side of the Debug tool window. The Breakpoints window appears, and there you could configure them.

Existen tres tipos principales de excepciones:

  1. Ejecuciones comprobadas: que tienen que ser manejadas por el código. Éstas representan condiciones excepcionales evitables que pueden ser manejadas y recuperadas.

  2. Excepciones de tiempo de ejecución: que no necesitan ser manejadas por el código. Éstas representan condiciones excepcionales inesperadas que pueden ser manejadas pero no necesariamente recuperarse de.

  3. Errores: que no necesitan ser manejados por el código. Éstos representan condiciones excepcionales inesperadas severas que shud no se intenta manejar.

  • Android java.lang.IllegalArgumentException in HttpGet
  • Android WebView: sólo carga HTML, no carga JS o CSS (en algunos dispositivos)
  • Cómo gestionar varias tareas asíncronas de forma eficiente en Android
  • Manera correcta de disponer de pantallas en Libgdx
  • Error de configuración de Sandbox en la aplicación de Android en un ID de Gmail concreto
  • RecyclerView: Las clases internas no pueden tener una declaración estática
  • Filtrar eficientemente un ArrayList en Java / Android
  • Después de pulsar una tecla, la vista desciende, sólo en S3
  • Juegos de sincronización de Java: sincronizados && wait && notify
  • Error de sintaxis en el token "class"
  • Establezca la altura y el ancho de los botones como contenido de ajuste y relleno de los padres
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.