En esta sección, pruebe la depuración remota de Java y grabe cosas simples para comenzar. ¡Incluso si es un registro!
Escriba un programa simple y escribalo en un frasco y tírelo a un servidor remoto para ejecutar, simulando que el servidor remoto se está ejecutando. Tome el programa de trabajo de envío de script de shell java llamando shell como ejemplo. El código fuente es el siguiente (el siguiente programa es un código de ejemplo simple, no le importa la especificación del código):
import java.io.inputstream; clase pública javashell {public static void main (string [] args) lanza excepción {try {string otorg = "chmod u+x subt-job.sh"; Runtime Runtime = runtime.getRuntime (); Proceso GrantProc = Runtime.exec (concesión); int resultCode = GrantProc.Waitfor (); System.out.println (resultCode); GrantProc = Runtime.exec ("./ Subt-Job.Sh"); resultCode = GrantProc.Waitfor (); System.out.println (resultCode); InputStream in = GrantProc.getInputStream (); byte [] buffer = new Byte [1024]; Código int; while (((code = in.read (buffer, 0, buffer.length))! = -1) {system.out.print (new String (buffer, 0, código)); } / ** * El bucle muerto evita que el depurador salga antes de que esté conectado (pruebe la función de parámetro suspendida) * / system.out.println ("Script de shell se ha ejecutado y la tarea de impresión cronometrada comenzará!"); int i = 0; while (true) {Thread.sleep (2000); System.out.println ("Este es el" th " + (++ i) +" Segundo bucle! ");}} Catch (Exception e) {System.out.println (" Esta es una excepción! ");} Finalmente {}}}Después de comprometerlo con el servidor remoto, ejecutarlo:
Copie el código de la siguiente manera: java -xdebug -xnoagent -djava.compiler = none -xrunjdwp: transport = dt_socket, dirección = 9999, servidor = y, suspend = y -jar javashell.jar
El programa será bloqueado y esperará a que el depurador se conecte. En este momento, podemos usar Eclipse para la depuración remota:
Haga clic en el depurador para conectar y rastrear el código fuente para ejecutar:
Hay salida de forma remota, lo que demuestra que el programa remoto está rastreando la ejecución del depurador:
En este punto, completamos el proceso de depuración. A continuación, intente el caso donde el parámetro suspenda = N:
Copie el código de la siguiente manera: java -xdebug -xnoagent -djava.compiler = none -xrunjdwp: transport = dt_socket, dirección = 9999, servidor = y, suspend = n -jar javashell.jar
En este momento, encontrará que el programa remoto no bloquea y espera la conexión del depurador del depurador, pero el programa se ejecuta normalmente:
En este momento, podemos usar el depurador remoto de Eclipse para la depuración remota, pero debe tenerse en cuenta que nuestro punto de ruptura local solo puede ser golpeado en el código remoto que no se ha ejecutado o el código que se está ejecutando. Por ejemplo, podemos romper los puntos en el bucle muerto (el bucle muerto es el código que se ejecuta todo el tiempo):
Luego comience el depurador:
Quédate en el punto de interrupción. Luego siga el puesto de punto de interrupción para continuar nuestro trabajo de depuración. En este punto, debe conocer el papel del parámetro de suspensión:
En los parámetros de depuración JVM, hay un parámetro llamado "suspensión", que tiene dos valores, "y" o "n".
Si desea depurar al principio, configure el parámetro en "suspender = y", para que Eclipse se conecte de forma remota a las aplicaciones Java.
Si desea ejecutar el proyecto primero y luego conectar Eclipse, puede establecer el parámetro en "suspender = n", para que la aplicación Java se ejecute normalmente, y luego Eclipse iniciará una conexión remota.
Más detalles del parámetro:
-Xdebug habilita la depuración.
-Xnoagent deshabilite el sun.tools.debug depugger predeterminado.
-Djava.compiler = ninguno prohíbe la carga del compilador JIT.
-XrunJDWP Carga JPDA Ejecución de ejecución de referencia de JDWP.
El transporte se utiliza para comunicarse entre depugadores y procesos utilizados por las máquinas virtuales.
transferencia de socket dt_socket.
DT_SHMEM Transferencia de memoria compartida, solo Windows.
servidor = y/n si la VM necesita ser ejecutada como un servidor de depuración.
dirección = 3999 El número de puerto del servidor de depuración, el número de puerto utilizado por el cliente para conectarse al servidor.
suspender = y/n si inicia la VM después de que el cliente de depuración establece una conexión.
Eclipse Depug Teck -Keys:
F5 paso hacia
F6 da un paso adelante
F7 Pase
F8 continúa al siguiente punto de interrupción
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.