2008-10-10 15 views
31

Quiero forzar la línea de ejecución actual a una línea específica en la misma función, posiblemente omitiendo líneas intermedias. Todos mis depuradores de la vieja escuela tenían esta característica, pero no puedo encontrarla en eclipse. ¿Hay alguna forma de hacerlo sin cambiar el código?¿Cómo puedo establecer la línea de ejecución actual en el eclipse java depurador?

+0

Buscando característica similar al estudio de visuales "set siguiente sentencia", pero para Java/Eclipse: http://msdn.microsoft.com /en-us/library/09yze4a9.aspx –

+1

hay una solicitud de error (o puede serlo) para eso en los errores de Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795 – Amitd

+0

Puntos As + PhiLho fuera, si la línea que desea ejecutar está adelante, por supuesto, "Ejecutar en línea". Sin embargo, si ya ha pasado la línea, puede "Drop frame" para llevarlo al inicio de la llamada a la función. Luego "Ejecutar en línea" como antes. – Robino

Respuesta

14

Las dos primeras respuestas parecen omitir el tema, a menos que no entienda la pregunta.

Mi comprensión, una característica que busqué yo, es que desea saltar una serie de líneas (al entrar en el código) y ajustar el contador de programa (hacerse con un vocabulario de montaje) a la recta dada. Puede ser interesante omitir algunas creaciones costosas de objetos, ver algunas situaciones de error, etc. Solía ​​hacer eso en Visual Studio (código C o C++).

No he encontrado eso en Eclipse, ni en NetBean. Podría ser una limitación de la JVM, o una imposición de que alguna política ...

El Ejecutar a línea comando de ejecución, por supuesto, todas las líneas entre la posición actual y la ejecución del designado.

+3

sí, ese es el problema que estoy tratando de encontrar la respuesta. – stu

-5

"Ejecutar en línea" parece necesitar que el programa se ejecute y en estado de pausa para usar. La otra opción es establecer un punto de interrupción para esa línea cuando se ejecuta en modo de depuración.

  1. Haga doble clic en la barra vertical izquierda en el panel de la fuente en la misma línea para agregar un punto de interrupción; o,
  2. Seleccione la línea y vaya a Ejecutar> Alternar punto de interrupción.

Al menos, esto está en Eclipse 3.3.2.

+2

-1 Run to line no tiene nada que ver con la alteración de la ejecución del programa. –

2

Creo que eso no es posible en Java. La única característica que le permite "retroceder" es usar "colocar en cuadro", que lo lleva de vuelta a la primera instrucción del cuadro actual. Por lo menos no he visto ningún depurador con esta funcionalidad específica, pero no he podido encontrar en la red qué es tan ...

sé el depurador en Visual C permite cambiar al puntero. Continuaré buscando, quizás al menos sabremos por qué es así, pero parece ser algún tipo de limitación de diseño.

11

Yo también he buscado esta característica por mucho tiempo, y "Ejecutar en línea" no es lo mismo.

Esto bien puede ser una limitación de la JVM. Java no implementa goto, aunque tiene declaraciones de salto, como break y continue. Esos están en el nivel de bloque sin embargo. Si se trata de una limitación de JVM, creo que es más probable debido a la arquitectura de seguridad. El estricto control del contador del programa es debilitante para los intrusos, como los virus y lamentablemente los depuradores.

+1

sí, eso es lo que el equipo de Eclipse estaba diciendo ... he vinculado un enlace de eclipse que muestra la conversación ... – Amitd

0

Solicitud de funciones diciendo que no es posible

En https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795 (créditos to Amitd) Darin Wright dice que es una limitación del depurador de Java subyacente:

Actualmente, esto no es posible con el depurador de Java como la interfaz de depuración nativa no proporciona la capacidad de mover/configurar el contador del programa arbitrariamente.

C/C++

CDT lo admite sin embargo (probado en Neon, Ubuntu 14.04). Haga clic derecho sobre la línea que desea ir, y seleccione:

  • "Mover a la línea": salto de línea y romper allí
  • "Reanudar en línea": salto de línea y continuar la ejecución de allí

Esto también sirve como una prueba más de que existe una limitación de Java subyacente, como Java tiende a ser más ricos de la característica en Eclipse, y esas entradas de menú no están presentes en Java junto a "Ejecutar a la línea" (que hace no omitir la ejecución de líneas).

Esta prueba programa imprime 0 si se salta la línea i = 1:

#include <stdio.h> 

int main(void) { 
    int i; 
    i = 0; /* Break here. */ 
    i = 1; 
    printf("%d\n", i); /* Jump to here. */ 
} 
Cuestiones relacionadas