Explicación detallada de la depuración remota de JAVA

Tabla de contenido

1. ¿Qué es la depuración remota?

2. Programa JAVA ordinario de depuración remota

ambiente

Programa de prueba

comando de inicio de programa

configuración del compilador

3. Programa web JAVA de depuración remota

4. Programa de arranque de resorte de depuración remota


1. ¿Qué es la depuración remota?

La depuración remota, es decir, un programa que se puede implementar local y remotamente, es muy útil para localizar problemas en el entorno remoto. La razón por la que decimos que es el entorno remoto no es útil para localizar errores en el entorno de producción. Esto es porque la depuración remota generalmente se usa durante las fases de desarrollo y prueba y no se recomienda su uso en entornos de producción debido al posible impacto en el rendimiento. Por supuesto, usar la depuración remota cuando no hay otra forma es uno de los medios más eficientes para localizar problemas de producción.

La depuración remota puede entenderse como una especificación de JVM. Por supuesto, no es una especificación separada. Forma parte del protocolo JDWP (Java Debug Wire Protocol), que define la interacción entre la máquina virtual Java (JVM) y el depurador. Forma. A través de JDWP, los desarrolladores pueden establecer puntos de interrupción, ver variables, ejecutar códigos y otras operaciones en las herramientas de desarrollo para depurar programas Java en ejecución. Para decirlo sin rodeos, la JVM que sigue el protocolo admite la depuración y la depuración remota.

2. Programa JAVA ordinario de depuración remota

2.1 Medio ambiente

JDK:1.8

Compilador: IDEA

2.2 Procedimiento de prueba

Aquí escribimos un programa de prueba muy simple, cada 1 segundo, lo incremento en 1 y luego lo empaqueto en un paquete jar

public static void main(String[] args) throws InterruptedException {
        int i=0;
        while (true){
            Thread.sleep(1000);
            i++;
        }
    }

Supongo que muchos estudiantes olvidarán cómo empaquetar programas ordinarios de java se en jars en IDEA. Aquí hay un poco más de intimidad y se proporciona el método de empaque. Use el complemento maven para empaquetar paquetes jar, especifique la entrada principal y luego instale:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.eryi.Test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.3 Comando de inicio de programa

Para depurar de forma remota, en primer lugar, use parámetros para habilitar la depuración remota cuando se inicia el programa y complete las instrucciones de los parámetros de la siguiente manera:

 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port>

  • transport: Especifique la forma de depuración de la transmisión de información, generalmente utilizada dt_socket.
  • server: Especifique si es un servidor de depuración, utilice para yindicar que sí.
  • suspend: Especifique si pausar al inicio, use nmedios para no pausar.
  • address: especifique el host y el puerto para la depuración y la supervisión, es decir, la depuración remota se realiza a través de este puerto.

Tomando nuestro programa anterior como ejemplo, el comando de inicio completo es:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 -jar test-1.0-SNAPSHOT.jar

Si el inicio es exitoso, se mostrará el puerto que está escuchando la depuración:

2.4 Configuración del compilador

Queremos depurar remotamente en IDEA, necesitamos configurar:

agregar configuraciones

 añadir nueva configuración—>remoto

Configuración:

Empezar a depurar:

Puede ver que el programa ha entrado en un punto de interrupción.

3. Programa web JAVA de depuración remota

Como servidor web de uso común, tomcat admite naturalmente la función de depuración remota para facilitar su uso. Los programas java ordinarios se inician con java -jar, y Tomcat se inicia con un script de inicio. El script de inicio registra todos los comandos que se ejecutarán al iniciar Tomcat, y la depuración remota también se escribe en él.

Modifique start.sh en el entorno de Windows y agregue el siguiente comando a la primera línea:

export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n"

Modifique start.bat en el entorno Linux y agregue el siguiente comando a la primera línea:

establezca "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n"

4. Programa de arranque de resorte de depuración remota

Como un jar, el proyecto spring boot se puede depurar usando java -jar y luego iniciando la depuración de programas Java ordinarios con parámetros.Además, spring boot también proporciona una forma más conveniente de depuración remota, que es Configurar los parámetros en el Complemento de empaquetado de arranque de primavera.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port></jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

Supongo que te gusta

Origin blog.csdn.net/Joker_ZJN/article/details/132252506
Recomendado
Clasificación