¿Por qué mi depurador de Eclipse no entra por primera vez?

Soy nuevo en Java y estoy aprendiendo a depurar en Eclipse. Recibo un error extraño en el que el depurador no puede ingresar a una función por primera vez, pero lo hace con éxito la segunda vez. Específicamente, aquí están mis pasos.

  1. Paso por encima hasta llegar a mi función deseada para examinar.
  2. Entra en la función. Aquí es cuando encuentro el error "Fuente no encontrada".
  3. Paso de regreso. El depurador vuelve con éxito al marco de pila anterior anterior.
  4. Entra en la función una vez más. Extrañamente, paso a las obras esta vez.

¿Qué podría estar mal? ¿Por qué se necesitan dos "pasos hacia adentro" para examinar mi función deseada?

preguntado el 15 de mayo de 12 a las 16:05

No puedo recordar por qué sucede esto atm, pero puedo asegurarles que es común :) Creo que algo con la ruta de compilación:

2 Respuestas

Esto puede suceder cuando hay dos declaraciones en una línea y la declaración interna no tiene fuente (como un JRE básico).

myObject.myMethod(someObject.toString());

En esta línea, el primer paso entrará en el método toString() en el objeto interno (para el cual puede que no haya una fuente disponible), el segundo paso entrará en su propio método (para el cual habrá código) .

La forma de resolver esto (si sucede con las clases regulares de tiempo de ejecución de Java) es usar un JDK completo para su proyecto en lugar de un JRE y siga una buena práctica de codificación y mueva la declaración interna a una variable para que cada línea haga exactamente una cosa (el optimizador debe asegurarse de que no haya una penalización de rendimiento por hacer esto).

contestado el 15 de mayo de 12 a las 17:05

Si tienes una línea como esta:

func1(obj.func2());

el primer paso del depurador en obj.func2() si es una fuente de terceros o java src y usted usa jre, es posible que se pierda este código fuente y eclipse no podrá adjuntar la fuente para la depuración (¡use maven! =)).

en el próximo 'paso a' llegará a func1

contestado el 15 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.