JAVA depuração princípio, a depuração remota caso, o modo de depuração springboot maven início, o servidor CAS depuração (debug escondido em build.cmd em princípio)

Aqui Insert Picture Descrição

princípio de depuração Java

Java Platform Debugger Architecture (Java Platform Debugger Architecture, ACDP)

referência

  1. Preto Java ciência e tecnologia fonte: JVMTI explicação completa
  2. Sobre os princípios de depuração Java

# Sistema ACDP Overview

  • programas Java são executados JVMem
  • Depuração java programa, na verdade Solicite seu atual estado operacional da máquina virtual Wait
  • JPDA A máquina virtual é fornecida Definir para depuração ferramentas e interfaces Java.

Ele pode ser dividido em três partes ACDP

  • Java Virtual Machine interface de ferramenta(JVMTI, JVM Tool Interface)

  • linha de depuração Java acordo(JDWP, Java Debug Wire Protocol)

  • Java Debug interface(JDI, Java Debug Interface).

hierarquia ACDPAqui Insert Picture Descrição

Caso a depuração remota

1. Crie um projeto Java, e escrever uma classe simples

Nome do projeto remoto-debug-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. O pacote embalado em frasco executável

Referência: jar IDEA packet geração pacote e deriva do frasco

projeto java comum, você pode diretamente ponto a depuração pode ser executada
(Isso ocorre porque as ferramentas de desenvolvimento para ajudá-lo configurado.)
Aqui Insert Picture Descrição

E agora deseja configurar manualmente

  • Gerando um pacote jar executável
    Aqui Insert Picture Descrição
    Aqui Insert Picture Descrição
    Aqui Insert Picture Descrição
    Aqui Insert Picture Descrição
    Aqui Insert Picture Descrição
    Aqui Insert Picture Descrição

Execute pacote jar, e iniciar o serviço de depuração

Referência: o Java remoto depuração

execução de comandos pacote jar

java -jar remote-debug-java.jar

Aqui Insert Picture Descrição
E agora queremos iniciar o servidor de depuração (interfaces abertas de depuração)

Então, em primeiro lugar ctrl + c

Re-digite o comando

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar remote-debug-java.jar

Aqui Insert Picture Descrição
Depois que o novo comando é executado, os ecrãs da consola, abra a porta 5006

Esta é a porta de depuração do servidor.
Atrás só precisa de clientes para conectar em uma porta, você pode conseguir a depuração remota


Precisa explicar

  • Antes da versão jdk1.7 , o comando é:
    java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
    após a versão 1.7
    ainda pode usar o comando antes: java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
    ounovo comando
    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar

  • argumentos do comando detalhado (novo comando como um exemplo)
    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar

    1. -Xdebug:Trabalho sob notificação JVM no modo de depuração;
    2. -Xrunjdwp: informando o uso JVM (java protocolo fio de depuração) para executar ambiente de depuração;
    3. transporte: ouvir conexão da porta do soquete
      (pode dt_shmem memória compartilhada, mas limitado a máquina Windows eo prestador do serviço eo depurador só pode terminar localizado na mesma máquina);
    4. servidor:servidor = y indica que o servidor de depuração atual, = n representa o cliente de depuração atual;
      Se você quiser depurar aplicação como o aplicativo atual, o valor definido Y;
      se você deseja aplicar a corrente como um cliente, como um iniciador de depuração, desde que o valor n.
    5. suspender: suspender = n 表示Quando começar sem interrupçãoÉ geralmente fornecida por uma ligação activa; suspender = y representa entra inicia o modo de depuração, geralmente utilizados ligação passiva;

      Conexão ativa do depuração :
      servidor de monitoramento configuração da porta, monitoramento remoto porta do conector IDE local para depuração, a depuração problema geral desta maneira.
      Passive depuração conexão :
      escuta IDE local em uma porta, espera porta local para conexões remotas. Geralmente utilizado para o serviço remoto não vai começar, conectar-se ao arranque análise de depuração local.

  • Agora inicie os prestadores de porta, chamamos servidor de depuração
    (Em seguida, o cliente início de depuração)

Nota: este serviço, o cliente é relativo.
Se a ideia é desenvolver ferramentas para ouvir, então a idéia é o servidor.
E agora, é para iniciar o programa no monitor, de modo que o início do programa é o servidor, ideia é o cliente.

Assim, a resposta, o servidor de programa = y, e (começando abaixo) IDEA o servidor n =

começa clientes de depuração

Para a idéia, por exemplo

(Eclipse Da mesma forma, ainda mais simples, consulte: https://www.cnblogs.com/wwywwy/p/9626078.html )

pacotes de código aberto em uma idéia jar(Não é o código-fonte, depuração anormalmente oh ~)

Aqui Insert Picture Descrição
Aqui Insert Picture Descrição
(Abaixo)comando Visualizar gerado é o comando serviços de depuração visualizar!
(Pacote jar Ie adicionar este comando, você pode ligar o servidor)
Aqui Insert Picture Descrição
Aqui Insert Picture Descrição

Depois de clicar, você pode ver, o programa foi suspenso, ea idéia para a interface de depuração.
Descrição cliente depuração sucesso conexão remota!

Aqui Insert Picture Descrição

cliente se desconecta de depuração

Aqui Insert Picture Descrição

Outras formas de servidor de depuração

: Referência programa Java em execução no depuração remota IntelliJ IDEA / projetos

  1. Configuração comum Java
    exemplo:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar chess-server.jar

  2. a configuração do projeto web tomcat
    no tomcat bindiretório, crie um novo setenv.sharquivo, digite:
    CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006"

  3. Se o sistema Windows, o novo setenv.batarquivo, digite:
    SET CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006
    depois de iniciar tomcat chamará automaticamente arquivos, parâmetros JVM setenv

programa java simples para depuração remota

done ~
Aqui Insert Picture Descrição

Maven para iniciar o springboot modo de depuração

referência:

Alguns projetos necessitam de linha de comando para iniciar a cada vez que o diretório de destino entrar na linha de comando um monte de problemas.

perito fornece linha de comando springboot operacional (de facto, operando Java)

Um olhar mais atento o arquivo pom.xml do springboot parte plugue.

Vamos ter spring-boot-maven-plugineste plugin

operação de comando Maven pode springboot

tais como

servidor de depuração Vamos abrir uma em ouvir modo ideia
Aqui Insert Picture Descrição
maneiras de depuração aberto o cliente de duas maneiras.

  1. Você pode digitar o seguinte comando no diretório raiz do projeto, iniciado no modo de depuração springboot.

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=5005"
    

    Note-se que este tempo é o cliente, servidor = n

  2. Ou documento pom foi escrito parâmetros 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>
    

    Aqui Insert Picture Descrição

Ambos os clientes, enquanto um está ligado, o servidor será monitorado para entrar no modo de depuração.

Claro, você também pode deixar o programa como um servidor, ideia como um cliente, pela mesma razão, é uma mudança de servidor e iniciar a sequência

serviço de depuração início CAS

Com a frente da cama, modo de depuração é ativado cas serviços é um natural.

O projeto como um exemplo: servidor github: https://github.com/LawssssCat/v-cas

Gengshuang, cas oficial também fornece uma maneira mais conveniente para iniciar o modo de depuração

Só precisa executar o seguinte comando no diretório raiz do projeto:

#我这个是window系统,所以使用的是cmd
build.cmd debug
# linux 系统是 build.sh debug

número de testes porta de escuta 5000
Aqui Insert Picture Descrição

Nota: É tempo para o servidor de aplicativos
Então, vamos abrir a idéia programa conectado em um cliente de depuração

Adicionando o cliente de depuração

Aqui Insert Picture Descrição

Aqui Insert Picture Descrição

Quando você está pronto para configurar, depurar aberta, você pode ver, mesmo nas pontas.

Aqui Insert Picture Descrição

Se aplicado no respectivo ponto de interrupção do processador. Ele vai começar a depuração

Aqui Insert Picture Descrição

princípio

Abrir arquivo build.cmd, você pode ver a seguinte frase
Aqui Insert Picture Descrição

: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

interpretador de comandos

Ele pode ser visto como dois comandos:

  1. mvn clean package
    (Explicação: maven projecto para limpar, e, em seguida, embalada)
  2. java -Xms500m -Xmx1g -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n -jar target/cas.war
    (Explicação: O diretório de arquivos cas.war alvo prazo, e definir alguns parâmetros, incluindo ligar servidor de depuração)

Explicar alguns dos outros comandos

  • : símbolos piloto etiqueta lote
  • % Variáveis ​​lote símbolos piloto
  • CALL Chama um programa em lotes a partir de outro.

Referência: o Windows CMD comando Daquan e explicações detalhadas e gramática

Publicado 501 artigos originais · ganhou elogios 112 · vê 20000 +

Acho que você gosta

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