¿Cómo puedo depurar esta excepción NullPointer?

Estoy tratando de escribir una aplicación para Android y cuando lanzo mi nueva actividad, he establecido puntos de ruptura y encontré que se ejecuta a través de mi onCreate sin errores, pero después de que la función devuelve, el depurador dice que hay una Excepción NullPointer . El problema es que no está en mi código, dice que está en ActivityThread.performLaunchActivity (ActivityThread $ ActivityRecord) línea: 2268 y donde la fuente normalmente sería (si fuera mi código) Acabo de obtener "Fuente no encontrada". Y un botón que dice "Edit Source Lookup Path"

¿Cómo puedo configurar eclipse para poder depurar este problema? Estoy seguro de que estoy haciendo algo mal en mi código, pero como la excepción se origina en el código que no puedo ver, no tengo ni idea de cómo averiguar dónde está el problema.

Estoy usando android-sdk-linux_x86-1.5_r3 y mi G1 para este proyecto.

UPDATE: Creo que mi pregunta realmente tiene más que ver con el desarrollo de Android que usar eclipse. No estoy seguro de dónde encontrar la fuente para el código que está lanzando la excepción. Tal vez hay una manera que puedo depurar sin tener ese archivo, pero no estoy seguro de lo que sería.

Su asumir va en la NPE es causado por usted, no Android. El NPE puede aparecer en la línea ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord) line: 2268 pero eso significa que pasó un puntero nulo a algo y se mantuvo pasando alrededor de hasta que performLaunchActivity realmente intentó usarlo y se estrelló cuando encontró un puntero nulo.

Si podemos ver el LogCat completo, en particular todo en rojo en el Eclipse LogCat que ayudaría a depurar. Me he vuelto a la búsqueda de un NPE sólo para que alguien más encuentre una línea de inicialización de recursos muy sutil fuera de lugar.

Estaba preguntando esto yo mismo, y aunque mostró el "causado por" en el logcat, quería que el depurador para romper realmente donde el NullPointer fue lanzado (a pesar de que fue capturado)

Así es cómo:

  1. Ejecutar -> Agregar punto de interrupción de excepción de Java
  2. Busque NullPointerException (o cualquier otra cosa que pueda estar depurando (la excepción "Caused by")
  3. Asegúrese de que Suspend On On Caught Exceptions esté activado. Haga clic en Aceptar.
  4. Debería ver un nuevo punto de interrupción en su vista

Intente ejecutarlo ahora, y el depurador debe romper donde realmente ocurre.

Un botón que dice "Edit Source Lookup Path"

Pulsa ese botón y dile a Eclipse dónde encontrar el código fuente para ese método. Eso debería ayudar. Por lo menos usted será capaz de entrar en él en el depurador y leer algo más sensato.

¿Podría mostrar la pila de llamadas completa?

Por lo general, al menos con Android, una excepción activa dos trazas separadas. El primero es inútil. El segundo, señalado por "causado por la excepción", es el que desea.

Y, incluso si ninguno de los rastreos de pila tiene su código, podemos reconocer algo al verlo todo.

No he trabajado con Andriod, pero Eclipse debería poder mostrarte la pila de llamadas. Mire el punto donde el programa sale de su código y entra en el de otra persona, y asegúrese de que todas sus variables sean correctas (no nulas, contienen los datos "correctos", etc.).

Incluso si está ocurriendo dentro del código de Android, todavía debe ser capaz de reducir en qué punto está sucediendo y cuál de sus variables no le gusta. Sí, vaga respuesta, no hay mucho más que decir. O descargue el código fuente y diga a Eclipse dónde está.

Si quieres ver la ubicación donde ocurre la excepción sin descargar el código fuente de Android, hay un bonito complemento para eclipse llamado GrepCode . Busca y muestra el código fuente de los populares proyectos java en línea.

  • ¿Cómo firmar una aplicación Android para el mercado?
  • Cómo organizar Eclipse - Workspace VS Lenguajes de programación
  • Error de instalación: INSTALL_FAILED_UID_CHANGED Teléfono Android no enraizado
  • Si escribo una aplicación con Android 4 Platform, ¿funcionará la aplicación en dispositivos Android 2?
  • Webcam para probar cámara en Android AVD?
  • No se puede actualizar el SDK de Android
  • Necesito probar mi aplicación en diferentes dispositivos virtuales
  • Edición de elementos múltiples en el diseño XML de Android mediante Eclipse
  • Emulador de inicio para AVD avd PANIC: No se pudo abrir: avd - Ubuntu 13.10
  • Google Glass no aparece como un dispositivo en eclipse bajo DDMS.
  • Cómo Incrementar Automáticamente versionCode al exportar aplicaciones de Android en Eclipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.