2012-06-01 12 views
9

Estoy intentando depurar una aplicación de Android simple en el emultor o en un dispositivo y no puedo hacer que el depurador se detenga en los puntos de interrupción que he establecido. He combinado las otras publicaciones aquí y en toda la web e intenté todas las sugerencias (Agregar depurables: "verdadero" al manifiesto, detener e iniciar adb, Limpiar todo, asegurarme de que utilizo el botón de depuración, no el botón de ejecución, etc., etc.) . En la perspectiva de depuración puedo ver los subprocesos y en DDMS muestra el ícono de depuración al lado del dispositivo en el que estoy depurando. Veo los puntos azules donde establezco el punto de interrupción y la perspectiva de Debug los enumera y dice que están activos.Depuración de Android con Eclipse: sin puntos de interrupción

He puesto alertas justo antes de los puntos de interrupción para verificar que el código se está ejecutando.

Empezando a volverse loco aquí. ¿Cualquier otra sugerencia? Debo extrañar algo simple pero no obvio.

ACTUALIZACIÓN: Aprecio las respuestas hasta ahora. Lamentablemente no han resuelto mi problema. He seguido las instrucciones de depuración y tengo activada la depuración en el teléfono. Además, veo la alerta "Esperando depuración" en el teléfono cuando se inicia. En general, todo dice que estoy depurando (incluida la obtención de resultados de logcat que he agregado). Simplemente no se detiene en los puntos de interrupción que he agregado y se enumeran en la pestaña de puntos de interrupción en la perspectiva de depuración. También solo para reiterar: esto ocurre cuando se depura tanto en el dispositivo como en el emulador. Una cosa que noto es que cuando inicio el depurador lo tengo configurado para que aparezca el Selector de dispositivo Android. Allí, la columna "depurar" está en blanco para mi dispositivo, pero si el emulador se está ejecutando, la columna de depuración dice 'Sí'. También la consola indica que está intentando conectarse al depurador. ¿Debería haber un registro de la consola que indique que el depurador se conectó correctamente? No veo esto

ACTUALIZACIÓN 20120914: He estado alejado de esto durante algún tiempo y había renunciado anteriormente. De vuelta para intentar abordar esto. Todavía no está resuelto. Todo lo de arriba sigue siendo actual, pero otra cosa que he notado. Establecí un punto de interrupción de carga de clase en la actividad principal y se detiene allí. Simplemente no se detiene en ningún punto de interrupción de línea. Acabo de actualizar al último JDK 1.7.0_07, Android SDK 20, ADT Plugin 20.0.3. He utilizado el Logcat para enviar un mensaje y establecer un punto de interrupción en esta línea. Veo el mensaje en logcat para saber que el código se está ejecutando. La ventana de depuración en la perspectiva debig también muestra la aplicación de Android con un número de subprocesos debajo y la ventana Dispositivos en la perspectiva DDMS muestra la aplicación con el icono de error verde al lado.

Una cosa más: cuando el depurador está ejecutando los puntos de corte de línea, las viñetas no reciben una marca de verificación superpuesta (¡el punto de carga de clase sí lo hace!). Supongo que esta es la causa raíz, pero no sé por qué no están obteniendo esto. (Por cierto, skip breakoints tampoco está configurado; los puntos de corte no tienen líneas a través de ellos).

Cualquier nueva sugerencia sería apreciada. He quemado mucho tiempo en esto. Debe ser algo obvio que no estoy viendo.

Respuesta

3

Android SDK proporciona la mayoría de las herramientas que necesita para depurar sus aplicaciones. Este enlace le presentará a Android debugging environment and the debugging tools utilizado.

Aquí también las manos en el tutorial sobre debugging an android application.

Si desea depuración mediante el teléfono androide real, encienda "depuración USB" en su dispositivo:

Configuración> Aplicaciones> Desarrollo y habilitación de depuración de USB

Y roid 4.0:

Ajustes> Opciones de desarrollador

y hacer uso de Log.d y su Logcat.

1

Eclipse tiene una configuración de ejecución de depuración. Solo si utiliza la configuración de ejecución de depuración se adjuntará un depurador con la aplicación durante el inicio.

¿El inicio de la aplicación (en el dispositivo/emulador) pausa un rato "Waiting for Debugger"? De lo contrario, no está iniciando la aplicación utilizando "configuración de depuración". Es el botón a la izquierda inmediata de la configuración de ejecución (desplegable).

5

Ahora me siento un poco estúpido escribiendo esta publicación. Pero resolví mi problema finalmente. El problema es que no puede establecer puntos de interrupción en el código Javascript. La parte que omití involuntariamente es que estoy escribiendo una aplicación para Android usando PhoneGap. Casi todo el código es Javascript. Estoy tan acostumbrado a desarrollar aplicaciones web .NET en Visual Studio. Supuse que podría establecer puntos de interrupción en el código de JavaScript. Los puntos de interrupción en el código de Java funcionan bien. De todos modos, gracias por cualquier sugerencia. No sé si hay otros desarrolladores de .NET probando el desarrollo de PhoneGap, pero tal vez esta publicación los ayude.

1

Pruebe jsHybugger: http://www.jshybugger.org/ para establecer los puntos de interrupción de Javascript en Eclipse para dispositivos remotos (móviles).

Le permite establecer puntos de interrupción, sencillos, detectar excepciones e interactuar con el entorno JS/DOM. Puede usarlo desde Eclipse o desde un depurador compatible con Chrome o Chrome en el escritorio remoto. Se puede usar con aplicaciones que crean su propia vista web.

Sin embargo, debe instalar algunos archivos, pero probablemente no sea más complicado de usar que nosotros. modifica extensamente los archivos JS (sobre la marcha, de forma transparente para el usuario) para habilitar toda esta depuración: webKit realmente debería soportar la depuración de JavaScript de forma nativa.

+0

Esta no es una respuesta relevante a la pregunta. Al menos puedo ver webview/phonegap/javascript mencionado en cualquier otro lugar que no sea en otra respuesta. – laalto

+2

Creo que es relevante porque al final preguntaba cómo depurar JavaScript en una aplicación (no Java en una aplicación como podría haber implicado la pregunta inicial. Esta es la única forma en que he encontrado que puedo depurar (punto de inflexión/singlestep) javascript (en Eclipse). – Ribo

0

Asegúrate de no haber marcado omitir todos los puntos de interrupción (Ejecutar -> Omitir todos los puntos de interrupción).

0

Ribo ya lo menciona en su respuesta, pero ya que esta pregunta y sus respuestas tratan sobre la depuración de aplicaciones Phonegap. Sin duda tiene que mirar weinre (WEb INspector REmote). http://people.apache.org/~pmuellr/weinre/docs/latest/

Hoy en día PhoneGap incluso tiene su propio weinre abrazado en la acumulación PhoneGap ... http://debug.phonegap.com/

Soy un gran fan de este ... (nota si está utilizando weinre en su máquina local y tratar de depure una aplicación de teléfono a través de wifi ... ¡asegúrese de que su dispositivo local esté en la misma red wifi!)

Cuestiones relacionadas