Tabla de contenido
1. ¿Qué es la depuración remota?
2. Programa JAVA ordinario de depuración remota
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 utilizadadt_socket
.server
: Especifique si es un servidor de depuración, utilice paray
indicar que sí.suspend
: Especifique si pausar al inicio, usen
medios 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>