Directorio artículo
- principio de la depuración de Java
- Caso depuración remota
- Realizar paquete frasco, e iniciar el servicio de depuración
- cliente se inicia depuración
- cliente se desconecta de depuración
- Otras formas de servidor de depuración
- Maven para iniciar el modo de depuración springboot
- servicio de depuración de inicio CAS
- Agregar el cliente de depuración
- principio
principio de la depuración de Java
Java Arquitectura depurador plataforma (la plataforma Java Depurador Arquitectura, JPDA)
referencia
# JPDA Descripción general del sistema
- Los programas Java se ejecutan
JVM
en - La depuración de Java programa, de hecho Solicitar su estado de funcionamiento actual de la máquina virtual Espere
JPDA
Se proporciona la máquina virtual Ajuste de herramientas de depuración de Java e interfaces.
Se puede dividir en tres partes JPDA
-
Java Virtual Machine Interfaz de herramienta(JVMTI, JVM Tool Interface)
-
línea de depuración de Java acuerdo(JDWP, Java depuración Wire Protocol)
-
Java Interfaz de depuración(JDI, Java interfaz de depuración).
Caso depuración remota
1. Crear un proyecto Java, y escribir una clase simple
Nombre del proyecto remoto de depuración en Java
import java.util.Date;
public class DeadCycled {
public static void main(String[] args) {
boolean cycle = true ;
boolean print = true ;
while (cycle) {
if(print) {
System.out.println(new Date());
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
2. El empaquetado en paquete jar ejecutable
Referencia: tarro de IDEA paquete de generación de paquetes y deriva el frasco
proyecto Java ordinaria, puede directamente a punto de depuración puede realizarse
(Esto se debe a las herramientas de desarrollo para ayudar a los que ha configurado.)
Y ahora desea configurar manualmente
- La generación de un paquete jar ejecutable
Realizar paquete frasco, e iniciar el servicio de depuración
Referencia: la depuración remota de Java
Tarro de ejecución de comandos de paquete
java -jar remote-debug-java.jar
Y ahora queremos iniciar el servidor de depuración (debug las interfaces abiertas)
Así, en primer lugar ctrl + c
Vuelva a introducir el comando
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar remote-debug-java.jar
Después de que se ejecute el nuevo comando, las pantallas de la consola, abra el puerto 5006
Este es el puerto de depuración del servidor.
Detrás sólo necesitan los clientes para conectar en un puerto, se puede lograr la depuración remota
Necesidad de explicar
-
Antes de la versión jdk1.7 , el comando es:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
después de la versión 1.7
aún puede utilizar el comando antes:java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
onuevo comando
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
-
argumentos de comandos detallados (nuevo comando como un ejemplo)
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
- -Xdebug:El trabajo en la notificación de JVM en modo de depuración;
- -Xrunjdwp: informar el uso JVM (protocolo de cable de depuración java) para ejecutar entorno de depuración;
- Transporte: escuchar conexión de puerto Socket
(puede dt_shmem memoria compartida, pero limitado a máquina de las ventanas y el proveedor del servicio y el depurador sólo puede extremo situado en la misma máquina); - servidor:servidor = y indica que el servidor de depuración actual, = n representa el cliente de depuración actual;
Si desea depurar aplicaciones como la aplicación actual, el valor conjunto Y,
si desea aplicar la corriente como un cliente, como iniciador de depuración, siempre que el valor n. - suspender: suspender = n 表示Cuando comenzar sin interrupciónSe indica en general en una conexión activa; suspender = y representa entra en el modo de depuración se inicia, generalmente utilizados conexión pasiva;
depuración conexión activa :
servidor de supervisión de la configuración de puertos, monitoreo remoto puerto conector IDE local para la depuración, la depuración problema general de esta manera.
Pasiva depuración de conexión :
la escucha IDE en un puerto local, puerto local de espera para las conexiones remotas. Generalmente se usa para el servicio remoto no se inicia, conectarse a la puesta en marcha de análisis de depuración local.
-
Ahora inicie el puerto de proveedores, llamamos servidor de depuración
(A continuación, el cliente de depuración de inicio)
Nota: este servicio, el cliente es relativo.
Si la idea es desarrollar herramientas para escuchar, entonces la idea es que el servidor.
Y ahora, es para iniciar el programa en la pantalla, por lo que el inicio del programa es el servidor, la idea es que el cliente.
Por lo tanto, la respuesta, el servidor de programa = y, y (a partir de a continuación) IDEA el servidor = n
cliente se inicia depuración
A la idea, por ejemplo,
(Eclipse Del mismo modo, aún más simple, se refieren a: https://www.cnblogs.com/wwywwy/p/9626078.html )
paquetes de código abierto en una idea frasco(No el código fuente, la depuración anormalmente oh ~)
(Continuación)comando Vista generada es el comando de los servicios de depuración preliminar!
(Es decir, el paquete frasco para añadir este comando, se puede convertir en el servidor)
Después de hacer clic, se puede ver, el programa fue suspendido, y la idea en la interfaz de depuración.
Descripción del cliente de depuración éxito conexión remota!
cliente se desconecta de depuración
Otras formas de servidor de depuración
: Referencia programa Java que se ejecutan en la depuración remota de IDEA IntelliJ / proyectos
-
Configuración común de Java
ejemplo:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar chess-server.jar
-
la configuración del proyecto Web de Tomcat
en el Tomcatbin
directorio, crear un nuevosetenv.sh
archivo, introduzca:
CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006"
-
Si el sistema de ventanas, el nuevo
setenv.bat
archivo, introduzca:
SET CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006
después de comenzar Tomcat llamará automáticamente a los archivos, los parámetros de JVM setenv
programa Java simple para la depuración remota
Done ~
Maven para iniciar el modo de depuración springboot
referencia:
Algunos proyectos requieren línea de comandos para iniciar cada vez que el directorio de destino entrar en la línea de comandos de un montón de problemas.
experto ofrece línea de comandos springboot operativa (de hecho, java en funcionamiento)
Una mirada más cercana a la pom.xml del tapón parte springboot.
Tendremos spring-boot-maven-plugin
este plugin
la operación de comandos Maven puede springboot
tal como
un servidor de depuración abierta Vamos a escuchar idea del modo de
formas de depurar abrir el cliente de dos maneras.
-
Se puede introducir el siguiente comando en el directorio raíz del proyecto, iniciado en springboot modo de depuración.
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=5005"
Tenga en cuenta que esta vez es el cliente, servidor = n
-
Pom o documento fue escrito parámetros de JVM
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.5.RELEASE</version> <configuration> <jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 </jvmArguments> </configuration> ... </plugin> ... </plugins> ... </build> ... </project>
Tanto los clientes, siempre y cuando uno está en, serán objeto de seguimiento del servidor para entrar en el modo de depuración.
Por supuesto, también se puede dejar que el programa como un servidor, la idea como un cliente, por la misma razón, es un cambio en el servidor, y comenzar la secuencia
servicio de depuración de inicio CAS
- cas Andamios: https://casinitializr.herokuapp.com/
- Varias versiones de la plantilla: https://github.com/apereo/cas-overlay-template
Con la parte delantera de la ropa de cama, el modo de depuración se activa cas servicios es un producto natural.
El proyecto como un ejemplo: servidor de GitHub: https://github.com/LawssssCat/v-cas
Gengshuang, cas funcionario también proporciona una forma más conveniente para iniciar el modo de depuración
Sólo hay que ejecutar el siguiente comando en el directorio raíz del proyecto:
#我这个是window系统,所以使用的是cmd
build.cmd debug
# linux 系统是 build.sh debug
puerto de escucha de pruebas 5000
Nota: Es hora de que el servidor de aplicaciones
Por lo tanto, vamos a abrir la idea de programa conectada en un cliente de depuración
Agregar el cliente de depuración
Cuando esté listo para configurar, depurar abierta, se puede ver incluso en las puntas.
Si se aplica en el punto de interrupción del procesador respectivo. Se comenzará la depuración
principio
build.cmd archivo abierto, se puede ver la siguiente frase
:debug
call:package %1 %2 %3 & java %JAVA_ARGS% -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n -jar target/cas.war
@goto:eof
intérprete de comandos
Se puede ver como dos comandos:
mvn clean package
(Explicación: maven proyecto para limpiar, y luego se envasa)java -Xms500m -Xmx1g -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n -jar target/cas.war
(Explicación: El directorio de archivos de destino cas.war plazo, y establecer algunos parámetros, incluyendo encender el servidor de depuración)
Explicar algunos de los otros comandos
:
la etiqueta de lote símbolos piloto%
Variables lotes símbolos pilotoCALL
Llama a un programa por lotes desde otro.
Referencia: Ventanas CMD comando Daquan y explicaciones detalladas y la gramática