working ver poner oxygen online not how funciona debugger debuggear debug como breakpoint java eclipse debugging breakpoints

java - ver - how to debug in eclipse oxygen



¿Cómo establecer un punto de interrupción en Eclipse en una biblioteca de terceros? (6)

La forma más segura de hacer esto (y terminar con algo que realmente es útil) es descargar el código fuente (dices que es de código abierto) y configurar otro "Proyecto Java" apuntando a esa fuente.

Para hacer eso, obtenga la fuente descargada y descomprimida en algún lugar de su sistema. Haga clic en "Archivo" -> "Nuevo" -> "Proyecto Java". En el siguiente cuadro de diálogo, asígnele un nombre de proyecto y seleccione "Crear proyecto a partir de una fuente existente". Busque la ubicación raíz de la biblioteca de código abierto.

Suponiendo que todas las bibliotecas adicionales que el proyecto requiere y las que se incluyen están incluidas en el proyecto que descargó, Eclipse resolverá todo y configurará la ruta de compilación para usted.

Tendrá que quitar el contenedor de código abierto de la ruta de compilación de su proyecto y agregar este nuevo proyecto a la ruta de compilación de su proyecto.

Ahora, puedes tratar esto como tu código y depurar a voluntad.

Esto soluciona al menos un par de problemas con otros enfoques:

  1. Podría "adjuntar fuente" al archivo jar, pero si el archivo jar se compiló sin información de depuración, esto aún no funcionará. Si el archivo jar se compiló con información de depuración ( lines,source,vars ... vea http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html , y la opción -g ).

  2. Podría agregar un "punto de interrupción de excepción" para ver cuándo se lanza la excepción NullPointerException, pero esa es una excepción común, y es posible que se la plantee y trate con muchos (cientos de?) Veces antes de la que está buscando. Además, sin la fuente original, no podrás ver gran cosa sobre el código que arroja la NullPointerException: la probabilidad de que puedas descubrir qué es lo que está mal es bastante baja.

Obtengo una NullPointerException en una clase de una biblioteca de terceros. Ahora me gustaría depurar todo y necesitaría saber de qué objeto se sostiene la clase. Pero me parece que no puedo establecer un punto de inflexión en una clase de un tercero.

¿Alguien sabe una manera de salir de mi problema? Por supuesto que estoy usando Eclipse como mi IDE.

Actualización: la biblioteca es de código abierto.


Normalmente, deberías ser capaz de establecer un punto de quiebre. Especialmente si la biblioteca de terceros es de código abierto. Pero si su lib de terceros es de un proveedor comercial, pueden haber compilado el origen con la bandera de depuración desactivada. Esto hará que sea imposible para usted depurarlo. Su proveedor podría haber hecho esto como parte de un proceso de ofuscación para imposibilitar la ingeniería inversa de la biblioteca, o simplemente porque las clases finales compiladas serán más pequeñas.


Para que esto funcione con una aplicación web materializada maven, tuve que hacer tres cosas.

1) Crea un nuevo proyecto de eclipse con el código fuente de la jarra de terceros.

2) Elimine la referencia al contenedor de las dependencias pom.xml.

3) Agregue el nuevo proyecto de eclipse al Ensamblaje de despliegue en las propiedades del proyecto.

4) Agregue el nuevo proyecto de eclipse a Propiedades del proyecto -> Ruta de compilación de Java -> Proyectos del proyecto existente que hace referencia al proyecto de un tercero.

Si el tercer proyecto se ha agregado correctamente a su repositorio maven, con las fuentes, maven automáticamente descargará el código fuente apropiado y le permitirá agregar puntos de interrupción sin tener que hacer ninguno de los pasos anteriores; sin embargo, he aprendido que no siempre puedes contar con esto.


Puede establecer fácilmente puntos de interrupción de método en bibliotecas de terceros sin tener la fuente. Simplemente abre la clase (obtendrás la vista "no tengo ninguna fuente"). Abra el esquema, haga clic con el botón derecho en el método que desee y haga clic en Toggle Method Breakpoint de interrupción del método para crear el punto de corte del método.


Simplemente conecte la fuente (o use algo que automáticamente una el recipiente fuente) y luego establezca un punto de interrupción de la manera normal, haciendo doble clic a la izquierda de la línea de interés.


También puede establecer puntos de interrupción en excepciones específicas. Desde la perspectiva de Debug, hay un botón "Add Java Exception Breakpoint", y allí puede agregar "NullPointerException". Su depurador suspenderá la ejecución tan pronto como se produzca dicha excepción.