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. . .
- Java no funciona con regex \ s, dice: inválido secuencia de escape
- ¿Se puede añadir subcarpeta al diseño en el proyecto Eclipse Android?
- El proyecto Biblioteca de Android no puede importar la clase R de otro proyecto de biblioteca al utilizar gradle para compilar en la línea de comandos
- Localización y eliminación de valores no referenciados en strings.xml
- Android, Eclipse, Google_Play_Services_Lib - intentando importar el proyecto y obtener errores
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?
- Utilice DownloadManager para descargar archivos a la tarjeta SD real, no al almacenamiento emulado
- ¿Hay algún problema al usar Eclipse 3.6 con el SDK de Android?
- Cómo utilizar el proyecto git forked en Android Studio
- JQuery Mobile & PhoneGap deviceReady () no se disparó
- Conflicto entre múltiples bibliotecas "android-support-v4"
- Mientras uso la biblioteca de soporte técnico estoy recibiendo un error que el atributo "" ya ha sido definido en android
- Al extraer adt-bundle-windows-x86_64-20140702 este error de Windows 8
- ¿Cómo puedo firmar automáticamente las solicitudes de facturació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
?
- Debe establecer varios puntos de interrupción. Primero en el lugar de invocar
startActivity()
luego en la primera declaración destartActivity()
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:
- 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 )
- 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.
- Buscar "Cerrar" o "Salir de subproceso": en un escenario de fallo, la causa raíz se muestra alrededor de estas palabras.
- 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.
- 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.
- Cantidad total de elementos de lista en un ListView
- ¿Puedo crear Fragment ListActivity con el paquete de compatibilidad v4?