2010-05-18 30 views
31

¿Es posible omitir una instrucción en Eclipse durante la depuración? Supongamos que el proceso se detiene en el punto de ruptura y quiero omitir la línea de punto de interrupción (o tal vez unas líneas más abajo), ¿puedo hacerlo? En la pestaña de depuración, solo tiene los botones "Paso hacia adentro", "Paso sobre" y "Paso hacia atrás".Cómo omitir una instrucción en Eclipse durante la depuración

Hice google alrededor pero no pude encontrar nada, con suerte puedo encontrar una respuesta aquí.

+0

por 'skip' ¿quiere decir pasar y no ejecutar? – akf

+3

sí, quiero que no se ejecuten –

+0

¿Quizás debería dar un ejemplo de lo que quiere omitido durante la depuración? AFAIK, Java no admite una "línea de salto" AFAIK. Los enfoques típicos son usar 'if (debug) {do_stuff; } ' – nevets1219

Respuesta

12

Si está depurando, puede comentar la línea que desea omitir y luego volver a compilar, que recorrerá el código de forma rápida y lo mantendrá dentro del método en el que se encuentra actualmente, permitiéndole omitir la línea.

Dependiendo de lo que desee que suceda, puede simplemente ejecutar la línea después de la que desea omitir, seleccione el código y elija Mostrar en el menú de clic r. Esto ejecutará el código seleccionado y proporcionará el resultado en una ventana emergente.

5

Puede establecer condiciones de punto de interrupción que determinarán si este punto de interrupción se detendrá o continuará. No sé de ninguna manera para que usted diga que no tome la siguiente línea de unos pocos sin cambiar el código a algo como:

if (!skip) { 
    // contents to be skipped 
} 

y luego en el punto de interrupción configurar skip true.

Para las condiciones de punto de interrupción, si return true se detendrá y continuará return false. Aquí puedes ejecutar el código y hacer lo que quieras (incluido establecer el valor de skip).

+0

aunque esta es una forma de hacerlo, necesita un trabajo adicional para compilar el código fuente y agregar las clases a classpath. –

+1

No necesita agregar nada al classpath. Todo lo que tiene disponible en el código está disponible en las condiciones de punto de corte. Tal vez Eclipse haga algo entre bastidores, pero ninguno de nosotros tendrá que preocuparse por eso. Además, hasta donde yo sé, puedo cambiar la condición del punto de interrupción durante la ejecución sin incurrir en una reconstrucción completa. – nevets1219

+0

en mi caso, el servidor WLS se está ejecutando con el archivo jar que estoy intentando depurar. Y Eclipse está conectado a un puerto de depuración del servidor, si cambio el código fuente, no estará sincronizado con el archivo jar de tiempo de ejecución. Lo intenté, no funcionó. –

2

Siempre puede cambiar el valor de la clase que está por tener un método llamado a una versión falsa de la misma.

Puede hacer esto haciendo clic derecho en el panel Variables y seleccionando Change Value. En la ventana que se puede introducir algo como:

new SomeClassMock() 

Por supuesto, esto supone que tiene clases Mock ya están en la ruta de clases Sin embargo ciertamente se podría crear una jarra llena de (Y parece que no lo hace.) las clases de Mock que necesita y colocarlas en la biblioteca compartida de Tomcat para que pueda acceder a ellas. No estoy seguro si esto funciona pero entiendes la idea.

3

Tuve un problema similar en el sentido de que quería omitir algunos códigos para poder obtener el resultado de la llamada al método que se realiza más adelante en el código. Olvidé que cuando está depurando, puede crear expresiones y evaluarlas en cualquier momento. En Eclipse hay una pestaña "Expresión" donde puede ingresar cualquier expresión (es decir, llamadas a métodos) que desee evaluar.

Esto significaba que no tenía que omitir las líneas, ya que pude evaluar lo que quería tan pronto como ingresé al método apropiado.

+0

Probablemente puedas resolver la mayoría de los casos de uso usando este enfoque ... pero si la línea de ejecución arroja una excepción ... quizás una llamada de hibernación suponga devolver una cadena "hola" entonces modifico la cadena después de la ejecución del método pero el método arroja excepción.. – mickeymoon

Cuestiones relacionadas