2010-05-06 10 views
6

Como una extensión de la pregunta "Modify/view static variables while debugging in Eclipse", me gustaría poder modificar las variables estáticas durante la depuración en Eclipse.Modificar variables estáticas durante la depuración en Eclipse

Por ejemplo y variables locales, puedo simplemente elegir la variable en la vista de "Variables" de Eclipse, y usar el menú contextual "Cambiar valor ..." para cambiar el valor.

Esto no es posible para variables estáticas arbitrarias, ya que no aparecen en la vista "Variables".

Lo que intenté:

  1. Si elige "Java/Mostrar variables estáticas" en el menú de triángulo en la vista "variables", se puede ver y modificar las variables miembro estáticas de las variables enumeradas en el " Vista de variables ". Sin embargo, no encontré cómo acceder a un miembro estático de una clase cuya instancia no aparece en la "Vista de variables".
  2. Puede, por supuesto, introducir un miembro estático como expresión en la "Vista de expresión" (utilizando el nombre totalmente calificado). Entonces puede ver el valor, pero la "vista de expresión" no tiene una opción para modificar el valor (hace permitir modificar los miembros de una expresión, pero no la expresión en sí misma, incluso si la expresión es un campo).

Por lo tanto, si tengo una variable estática como un MyClass.disableAllBugs booleanos, ¿hay una manera de cambiar MyClass.disableAllBugs durante la depuración?

Como nota aparte: me doy cuenta de que incluso tener campos estáticos mutables públicos (es decir, variables globales mutables) es un estilo muy malo. Pero algunas bases de código lo tienen, y a veces es útil modificarlo durante la depuración.

Respuesta

6

Puede escribir una línea temporal SomeClass.myStaticVar = newValue;, seleccionarla, hacer clic con el botón derecho y "ejecutarla".

+0

Buen truco. A veces hago eso para invocar métodos manualmente mientras se depura (por ejemplo, printStackTrace() para una excepción). Sin embargo, no pensé en eso en este contexto. – sleske

+0

¿Qué ocurre si se trata de un campo estático privado? – RAY

+0

@RAY Solo quería confirmar que esto también funciona para campos estáticos privados. – nerdherd

Cuestiones relacionadas