Buena estrategia para depurar esto?

Android (4.2.2) aplicación desarrollada en Java en Eclipse, estoy recibiendo un accidente, pero no puedo averiguar lo que en mi código está causando. . .

El seguimiento de la pila no hace referencia a ninguno de mi propio código fuente. . .

Tema [<1> principal] (Suspendido (excepción RuntimeException))
ActivityThread.performLaunchActivity (ActivityThread $ ActivityClientRecord, Intención) Línea: 2255
ActivityThread.handleLaunchActivity (ActivityThread $ ActivityClientRecord, Intención) line: 2309 ActivityThread.access $ 700 (ActivityThread, ActivityThread $ ActivityClientRecord, Intención) line: 157
ActivityThread $ H.handleMessage (Mensaje) línea: 1289
ActivityThread $ H (Handler) .dispatchMessage (Mensaje) línea: 99 Looper.loop () línea: 176 ActivityThread.main (String []) line: 5317
Method.invokeNative (método Object, Object [], Class, Class [], Class, int, boolean) línea: no disponible [método nativo] Method.invoke (Object, Object …) línea: 511 ZygoteInit $ MethodAndArgsCaller.run ) Line: 1102 ZygoteInit.main (String []) line: 869 NativeStart.main (String []) line: no disponible [native method]

… Lanzar varias actividades en mi aplicación y todos ellos están envueltos en un try / catch pero si establezco puntos de interrupción en los bloques catch no están siendo golpeados, y si paso por encima del código que lanza las actividades nada parece mal. Tampoco el sistema escribe nada a Logcat indicando excepciones (no hay filtros en Logcat, salida Verbosa completa).

Al hacer clic en las líneas anteriores sólo me da "fuente no encontrada". ¿Hay una manera de ver qué actividad está intentando comenzar o cuál es la naturaleza de la excepción?

Después de investigar esto vi la respuesta a esta pregunta aquí:

¿Cómo evito la captura de excepciones en Android?

Que sugieren que siga ejecutando el código hasta que obtenga información en su logcat que pertenece a su código.

Sólo una nota sobre el uso de verbose, etc.
Además, personalmente sólo me enfoco en los errores cuando empiezo a depurar. Me parece que es más fácil de leer. Quitar todos los errores de la logcat antes de empezar a mirar las advertencias. También con verboso, si el programa realmente no está funcionando bien, el logcat puede tener problemas para mantenerse al día.

Este es mi estilo personal de depuración, no es de ninguna manera la ley.

Buena suerte con esto.

En primer lugar – try / catch no es la mejor manera de obtener la aplicación a prueba de balas – por lo general gran número de tales bloques significa que el autor está disimulando errores.

Lo que probablemente hiciste es pasar algunos argumentos incorrectos a algún método del sistema o simplemente tienes algún error específico de la plataforma. No puedo decir cuál es ese método que basa solamente en su logcat.

¿Cómo encontrar el error? Probablemente la manera más efectiva es establecer algunos mensajes de registro / puntos de interrupción y depurarlo línea por línea, siempre y cuando obtendrá este error una vez más. Luego regrese aquí con más detalles si es necesario.

Intente ejecutarse en el depurador del IDE en modo de depuración . Normalmente atrapará su excepción. Puede que tenga que hacer clic en los diferentes subprocesos para ver qué está sucediendo con cada uno.

¿Está seguro de que la versión 4.2.2 es correcta? El código AOSP de ActivityThread.java no muestra nada más que comentarios en la línea 2255 para todas las etiquetas 4.2.2 . Sin nada más que seguir, si estuviera en esta situación, me sumergiría en el código AOSP para ver si proporciona alguna pista sobre dónde las cosas van mal.

¿Cuál es el bloque de código de onCreate() de ActivityClientRecord ?

  1. Debe establecer varios puntos de interrupción. Primero en el lugar de invocar startActivity() luego en la primera declaración de startActivity() de la actividad de destino. A continuación, debe ir declaración por declaración para averiguar la causa exacta.

Si todavía no puede encontrar el punto problemático, a continuación, capture Error no la Exception envuelve la startActivity() , entonces háganos saber si usted puede ver cualquier información útil.

Intente agregar en su código de la clase de aplicación siguiente:

 public class App extends Application { @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { ex.printStackTrace(); } }); } 

}

En mi experiencia, he enfrentado problemas similares al encontrar el código que está causando un fallo. Aquí es generalmente lo que hago en tales casos:

  1. Aumentar el tamaño del búfer de registro – A veces, demasiadas cosas suceden en el Logcat y el stacktrace que está buscando ya ha sido borrado. (Para Android Studio, es un poco diferente )
  2. Aplicar un filtro con el nombre de la aplicación : esto elimina todo el desorden de registros de otras aplicaciones. Si todavía no hay suerte, vuelva a "Sin filtros" y continúe con el paso 3.
  3. Buscar "Cerrar" o "Salir de subproceso": en un escenario de fallo, la causa raíz se muestra alrededor de estas palabras.
  4. Reduzca el código problemático utilizando puntos de interrupción. Hay muchas maneras de hacerlo, pero prefiero establecer un punto de interrupción en cualquier "evento principal" (OnCreate, Servicio, Llamadas, Excepción de captura, etc.) y ejecutar a través de cada uno hasta que encuentre un evento importante que nunca se alcanza, pero debería ser. A continuación, ajustar los puntos de interrupción un poco más cada vez para reducir más.
  5. Preste más atención a los Threads / Runnables cercanos, ya que estos son a menudo culpables de errores de misterio (bucles infinitos, deadlock, etc.). Coloque un punto de interrupción en cada línea en el método run () si tiene que, y ver dónde se bloquea / falla.
  • ¿Puedo compartir código y recursos entre proyectos de Android sin usar una biblioteca?
  • La biblioteca de soporte de Android v4 y la API de Google Maps rompen la compilación
  • En Eclipse, ¿cómo puedo acceder rápidamente al origen de un "proyecto de biblioteca de Android" desde el origen de un proyecto que lo usa?
  • Cómo utilizar una base de datos existente con una aplicación de Android
  • Error del emulador: falta la configuración de este AVD en un archivo del kernel
  • ¿Por qué Eclipse insiste en un nombre de paquete para un proyecto de Android?
  • Problema al convertir .docx al archivo pdf en android
  • R.java no está generando debido a appcompat v7?
  • Error: No se encontró ningún recurso que coincida con el nombre dado (en 'icono' con el valor '@ drawable / icon')
  • Eclipse ADT: Java se inició pero devolvió el código de salida = 13
  • Eclipse con Android SDK faltan elementos de menú
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.