JAVA depuración principio, la depuración remota caso, el modo de depuración springboot inicio Maven servidor CAS de depuración (debug escondido en build.cmd en principio)

Aquí Insertar imagen Descripción

principio de la depuración de Java

Java Arquitectura depurador plataforma (la plataforma Java Depurador Arquitectura, JPDA)

referencia

  1. Negro de Java la ciencia y la tecnología de fuente: JVMTI completa explicación
  2. En los principios de depuración de Java

# JPDA Descripción general del sistema

  • Los programas Java se ejecutan JVMen
  • 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).

jerarquía JPDAAquí Insertar imagen Descripció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.)
Aquí Insertar imagen Descripción

Y ahora desea configurar manualmente

  • La generación de un paquete jar ejecutable
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción

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

Aquí Insertar imagen Descripción
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

Aquí Insertar imagen Descripción
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

    1. -Xdebug:El trabajo en la notificación de JVM en modo de depuración;
    2. -Xrunjdwp: informar el uso JVM (protocolo de cable de depuración java) para ejecutar entorno de depuración;
    3. 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);
    4. 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.
    5. 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 ~)

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
(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)
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

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!

Aquí Insertar imagen Descripción

cliente se desconecta de depuración

Aquí Insertar imagen Descripción

Otras formas de servidor de depuración

: Referencia programa Java que se ejecutan en la depuración remota de IDEA IntelliJ / proyectos

  1. Configuración común de Java
    ejemplo:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar chess-server.jar

  2. la configuración del proyecto Web de Tomcat
    en el Tomcat bindirectorio, crear un nuevo setenv.sharchivo, introduzca:
    CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006"

  3. Si el sistema de ventanas, el nuevo setenv.batarchivo, 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 ~
Aquí Insertar imagen Descripción

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-plugineste plugin

la operación de comandos Maven puede springboot

tal como

un servidor de depuración abierta Vamos a escuchar idea del modo de
Aquí Insertar imagen Descripción
formas de depurar abrir el cliente de dos maneras.

  1. 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

  2. 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>
    

    Aquí Insertar imagen Descripción

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

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
Aquí Insertar imagen Descripción

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

Aquí Insertar imagen Descripción

Aquí Insertar imagen Descripción

Cuando esté listo para configurar, depurar abierta, se puede ver incluso en las puntas.

Aquí Insertar imagen Descripción

Si se aplica en el punto de interrupción del procesador respectivo. Se comenzará la depuración

Aquí Insertar imagen Descripción

principio

build.cmd archivo abierto, se puede ver la siguiente frase
Aquí Insertar imagen Descripción

: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:

  1. mvn clean package
    (Explicación: maven proyecto para limpiar, y luego se envasa)
  2. 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 piloto
  • CALL Llama a un programa por lotes desde otro.

Referencia: Ventanas CMD comando Daquan y explicaciones detalladas y la gramática

Publicados 501 artículos originales · ganado elogios 112 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/LawssssCat/article/details/105002822
Recomendado
Clasificación