Depuración de Complemento
Cuando los errores en el código de su complemento son difíciles de identificar, está cansado de volver a compilar después de cada simple cambio y las salidas del registrador saturan su código, la depuración puede ser muy tediosa. Así que, esta sección explicará como configurar su plugin para utilizar las capacidades de depuración de Java.
Preparación de su espacio de trabajo
Ya que ejecutaremos ambos, Sponge y su complemento desde su IDE, necesitará importar ya sea SpongeForge o SpongeVanilla, dependiendo cual quiera utilizar, como un proyecto en su espacio de trabajo. Las instrucciones para hacerlo se encuentran en la respectiva página de GitHub de proyectos. Siga esas instrucciones cuidadosamente antes de continuar aquí.
Ahora necesita asegurarse que su proyecto de plugin es visible para el proyecto SpongeForge/SpongeVanilla que acaba de crear. Los pasos necesarios dependen de su IDE.
IntelliJ IDEA
En IntelliJ, cada proyecto tiene su propio espacio de trabajo o espacios de trabajo. Para hacer su proyecto visible para el proyecto Sponge(Vanilla), necesita ser un Módulo. Suponiendo que ya creó su proyecto como se describe en Configuración de IntelliJ IDEA, impórtelo siguiendo los siguientes pasos.
Abrir el proyecto
SpongeVanilla
/SpongeForge
.Haga clic en
Archivo
, seguido deNuevo
, luegoMódulo de Fuentes Existentes...
.Navegue hasta el directorio de su proyecto de plugin.
Si está utilizando Gradle, selecciones el archivo
build.gradle
, en el siguiente diálogo marque``Use auto-import`` y confirme.De lo contrario, solo seleccione el directorio completo y haga clic en
Finalizar
.
Haga clic en
Finalizar
.
Truco
Si no ha creado todavía su plugin, haga clic en Módulo...
en lugar de Módulo de Fuentes Existentes...
, entonces cree su proyecto en el siguiente diálogo.
Eclipse
Solo cree su proyecto como se describe aquí Configuración de Eclipse. Siempre que esté en el mismo espacio de trabajo que su proyecto SpongeVanilla
/SpongeForge
, será visible.
Agregar el Plugin a la ruta de clase de Sponge
La idea detrás de esto es que lanzaremos Sponge desde su IDE, como es normal. Sin embargo, la diferencia es que agregaremos su plugin a la ruta de clase. Ya que Sponge por defecto carga todos los complementos encontrados en la ruta de escape, agregar el proyecto de plugin a la ruta de clase de Sponge lo liberará de la necesidad de volver a compilar y copiar el archivo de artefactos en el directorio de su servidor después de cada cambio.
En primer lugar, debes asegurarte de que tener correctamente configuradas las opciones de ejecución/depuración, como se muestra en el Sponge README.md
Luego necesitará editar esa Configuración de Ejecución/Depuración para que se incluya su proyecto en la ruta de clase. Como hacerlo, depende otra vez de su IDE:
IntelliJ IDEA
Abra su Estructura del Proyecto.
Haga clic en
Archivo
, seguido deEstructura del Proyecto...
.O, haga clic en el ícono
Estructura del Proyecto
, en la esquina superior derecha del IDE, al lado del íconoBuscar
.
Haga clic en
Módulos
. Expanda el grupoSpongeForge
oSpongeVanilla
(dependiendo de su elección).Asegúrese de que
SpongeForge_main
oSpongeVanilla_main
esté seleccionado.En la columna derecha, seleccione la pestaña
Dependencias
.Haga clic en el símbolo
+
(Agregar
) en el fondo de la columan, y seleccioneMódulo de Dependencia
.Selecciones
yourplugin_main
.NO marque la opción
Exportar
en el módulo, después de que se agregue a la lista.
Eclipse
Encuentre su Configuración de Ejecución/Depuración
Haga clic en
Ejecutar
, seguido deConfiguraciones de Ejecución...
O, haga clic en la flecha desplegable al lado de los íconos Ejecución/Depuración y luego
Configuraciones de Ejecución...
oConfiguraciones de Depuración...
, respectivamente.
Seleccione su Configuración de Ejecución/Depuración para Sponge (Servidor) en el lado izquierdo.
Cambia a la pestaña
Classpath
.Seleccione
Entradas de Usuario
, seguido del botónAgregar Proyectos...
.Seleccione el Proyecto apropiado para su Plugin.
Haga clic en el botón
Aceptar
.Haga clic en el botón
Aplicar
en la esquina inferior izquierda.
Ejecución de la Configuración
Después de que ha seguido los pasos previos, debería estar listo para empezar la depuración. Si inicia su servidor desde su IDE, su directorio de trabajo será el directorio ejecución
en su proyecto SpongeForge/SpongeVanilla. Todos los archivos creados usualmente por un servidor (mundos, configuraciones, etc.) serán almacenados en ese directorio ejecución
y persistirán en varias ejecuciones de su servidor de prueba local, tal como si manualmente se copiara un servidor .jar al directorio ejecución
e iniciara desde allí.
IntelliJ IDEA
En lugar de presionar la flecha verde que señala la derecha para ejecutar su configuración de Ejecución/Depuración, haga clic en el ícono verde a la derecha, Depurar
.
Eclipse
En lugar de presiona la flecha verde que señala a la derecha para ejecutar su configuración de Ejecución/Depuración, haga clic en la flecha desplegable del ícono Depurar (el que muestra un error) y haga clic en su configuración de Prueba (Servidor)
. Si no aparece en el menú desplegable, haga clic en Configuraciones de Depuración
. Selecciones la configuración Prueba (Servidor)
y presione el botón Depurar
en la parte inferior izquierda.
Uso del Depurador
Ahora que su servidor (y su plugin) están ejecutándose en el Depurador, puede hacer uso de las características que contiene. Los utilizados principalmente se explican brevemente a continuación, aunque no son características de Sponge, sino del Depurador de Java su IDE los utiliza.
Puntos de Ruptura
Los puntos de ruptura son una herramienta útil para observar de cerca al código. Un punto de ruptura, puede ser establecido en el comienzo de un línea de código o una función. Cuando se alcanza un punto de ruptura se detendrá la ejecución del código y su IDE abrirá una vista que le permitirá inspeccionar el contenido de todas las variables en ámbito actual. La ejecución del código no se reanudará a menos que presiones el botón correspondiente en la vista de depuración de su IDE.
Los puntos de ruptura pueden también ser agregados, removidos o temporalmente deshabilitados mientras la depuración está en proceso.
Truco
Una vez un tick de servidor único toma más que una cantidad determinada de tiempo, el watchdog considerará que el servidor se ha bloqueado y lo cerrará por la fuerza. Cuando trabaja con puntos de ruptura esto puede ocurrir, así que es recomendado que edite sus entornos de pruebas del archivo server.properties
y establezca el valor de max-tick-time
en un valore muy largo (la cantidad de milisegundos que puede tomar un tick) o -1
(para deshabilitar completamente el Watchdog).
IntelliJ IDEA
Para agregar o remover un punto de ruptura, solo haga clic izquierso en el espacio en blanco justo a la izquierda de su editor.
Alternativamente, coloque su cursor en la línea donde quiere agregar o remover el punto de ruptura y después haga clic en Ejecutar
seguido de Toggle Line Breakpoint
.
Eclipse
Para agregar o remover un punto de ruptura, solo haga clic derecho en el espacio en blanco justo a la izquierda de su editor y haga clic en Toggle Breakpoint
.
Alternativamente, coloque su cursor en la línea donde quiere agregar o remover el punto de ruptura y después haga clic en Ejecutar
seguido de Toggle Breakpoint
.
Código Hotswapping
La otra gran hazaña del depurador es que no tendrá que reiniciar su servidor por cada cambio pequeño que haga, gracias al código hotswapping. Esto significa que puede solo recompilar partes de su código mientras se está ejecutando en el depurador. Sin embargo, hay un par de limitaciones, las más importantes son:
No puede crear o remover métodos.
Los cambios en los método están limitados al código dentro del método. No puede modificar su firma (que significa su nombre, tipo retorno y tipos de parámetros)
No puede remover clases.
No puede modificar el nombre de una clase, una superclase o la lista de interfaces que implementa.
Puede agregar clases. Sin embargo, una vez que ha sido compilada y hotswapped, la clase sigue las reglas anteriores.
Puede probar esta funcionalidad: Introduzca un comando simple para su plugin que solo escriba una palabra, como Sponge
. Luego guárdelo e inicie el servidor como se describe anteriormente. Ejecute el comando. Saldrá Sponge
. Ahora cambie el comando para escribir una palabra diferente en la consola, guarde el archivo. Después de un cambio, haga lo siguiente para enrutar los cambios al programa en ejecución:
IntelliJ IDEA
Abra el menú
Ejecutar
, de la parte superior del IDE.Debajo del primer quiebre de categoría, haga clic en
Recargar Clases Modificadas
.
Eclipse
No se necesita ninguna acción. Tan pronto como guarde el archivo, será recompilado y automáticamente hotswapped con la depuración actual en ejecución. A menos que cambie este comportamiento predeterminado particular, no tendrá que desencadenar un hotswap manual.