Nesta seção, experimente a depuração remota do Java e grave coisas simples para começar. Mesmo que seja um recorde!
Escreva um programa simples e digite -o em um frasco e jogue -o em um servidor remoto para executar, simulando que o servidor remoto está em execução. Veja o programa Java Job Submission Java Challing Script como exemplo. O código -fonte é o seguinte (o programa a seguir é um código de exemplo simples, não se importa com a especificação do código):
importar java.io.inputStream; public class JavaShell {public static void main (string [] args) lança exceção {try {string Grant = "chmod u+x submmit-job.sh"; Runtime Runtime = Runtime.getRuntime (); Processo GrantProc = Runtime.exec (Grant); int resultcode = GrantProc.waitfor (); System.out.println (resultadocode); GrantProc = RunTime.exec ("./ submmit-job.sh"); resultadocode = GrantProc.waitfor (); System.out.println (resultadocode); InputStream in = GrantProc.getInputStream (); byte [] buffer = novo byte [1024]; código int; while ((code = in.read (buffer, 0, buffer.length))! = -1) {System.out.print (new String (buffer, 0, código)); } / ** * O loop morto impede que o depurador saia antes de ser conectado (teste a função do parâmetro suspender) * / system.out.println ("O script do shell foi executado e a tarefa de impressão cronometrada será iniciada!"); int i = 0; while (true) {thread.sleep (2000); System.out.println ("Este é o" Th " + (++ i) +" Segundo Loop! ");}} Catch (Exceção e) {System.out.println (" Esta é uma excitação! ");} Finalmente {}}}}Depois de comprometê -lo com o servidor remoto, execute -o:
Copie o código da seguinte forma: java -xdebug -xnoagent -djava.compiler = None -xrunjdwp: transport = dt_socket, endereço = 9999, servidor = y, suspender = y -Jar javaShell.jar
O programa será bloqueado e aguardará a conexão do depurador. Neste momento, podemos usar o Eclipse para depuração remota:
Clique em Depurador para conectar e rastrear o código -fonte para executar:
Há saída remotamente, provando que o programa remoto está rastreando a execução do depurador:
Neste ponto, concluímos o processo de depuração. Em seguida, tente o caso em que o parâmetro suspender = n:
Copie o código da seguinte forma: java -xdebug -xnoagent -djava.compiler = None -xrunjdwp: transport = dt_socket, endereço = 9999, servidor = y, suspender = n -Jar javaShell.jar
No momento, você descobrirá que o programa remoto não bloqueia e aguarda a conexão do depurador, mas o programa é executado normalmente:
No momento, podemos usar o depurador remoto do Eclipse para depuração remota, mas deve -se notar que nosso ponto de interrupção local só pode ser atingido no código remoto que não foi executado ou o código que está sendo executado. Por exemplo, podemos quebrar pontos no loop morto (o loop morto é o código que está sendo executado o tempo todo):
Em seguida, comece a depurador:
Fique no ponto de interrupção. Em seguida, siga a posição do ponto de interrupção para continuar nosso trabalho de depuração. Neste ponto, você deve saber o papel do parâmetro de suspensão:
Nos parâmetros de depuração da JVM, há um parâmetro chamado "Suspender", que possui dois valores, "y" ou "n".
Se você deseja depurar no início, defina o parâmetro para "suspender = y", para que o Eclipse se conecte remotamente aos aplicativos Java.
Se você deseja executar o projeto primeiro e depois conectar o Eclipse, poderá definir o parâmetro como "suspense = n", para que o aplicativo Java seja executado normalmente e, em seguida, o Eclipse iniciará a conexão remota.
Mais detalhes do parâmetro:
-Xdebug Habilite a depuração.
-Xnoagent Desativar o depurador Sun.Tools.Debug.
-Djava.compiler = nenhum proíbe o carregamento do compilador JIT.
-Xrunjdwp Carrega o exemplo de execução de referência jpda de jdwp.
O transporte é usado para se comunicar entre depuradores e processos usados pelas VMs.
transferência de soquete dt_socket.
DT_SHMEM Com transferência de memória compartilhada, apenas Windows.
Servidor = Y/N Se a VM precisa ser executada como um servidor de depuração.
Endereço = 3999 O número da porta do servidor Debug, o número da porta usado pelo cliente para se conectar ao servidor.
suspender = y/n se deve iniciar a VM após o cliente de depuração estabelecer uma conexão.
Chaves de atalho de depuração Eclipse:
F5 entre
F6 Passo
F7 saia
F8 continue para o próximo ponto de interrupção
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.