Diretório do artigo
- princípio de depuração Java
- Caso a depuração remota
- Execute pacote jar, e iniciar o serviço de depuração
- começa clientes de depuração
- cliente se desconecta de depuração
- Outras formas de servidor de depuração
- Maven para iniciar o springboot modo de depuração
- serviço de depuração início CAS
- Adicionando o cliente de depuração
- princípio
princípio de depuração Java
Java Platform Debugger Architecture (Java Platform Debugger Architecture, ACDP)
referência
# Sistema ACDP Overview
- programas Java são executados
JVM
em - 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).
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.)
E agora deseja configurar manualmente
- Gerando um pacote jar executável
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
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
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
- -Xdebug:Trabalho sob notificação JVM no modo de depuração;
- -Xrunjdwp: informando o uso JVM (java protocolo fio de depuração) para executar ambiente de depuração;
- 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); - 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. - 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 ~)
(Abaixo)comando Visualizar gerado é o comando serviços de depuração visualizar!
(Pacote jar Ie adicionar este comando, você pode ligar o servidor)
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!
cliente se desconecta de depuração
Outras formas de servidor de depuração
: Referência programa Java em execução no depuração remota IntelliJ IDEA / projetos
-
Configuração comum Java
exemplo:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar chess-server.jar
-
a configuração do projeto web tomcat
no tomcatbin
diretório, crie um novosetenv.sh
arquivo, digite:
CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006"
-
Se o sistema Windows, o novo
setenv.bat
arquivo, 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 ~
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-plugin
este plugin
operação de comando Maven pode springboot
tais como
servidor de depuração Vamos abrir uma em ouvir modo ideia
maneiras de depuração aberto o cliente de duas maneiras.
-
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
-
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>
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
- cas Andaimes: https://casinitializr.herokuapp.com/
- Várias versões do modelo: https://github.com/apereo/cas-overlay-template
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
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
Quando você está pronto para configurar, depurar aberta, você pode ver, mesmo nas pontas.
Se aplicado no respectivo ponto de interrupção do processador. Ele vai começar a depuração
princípio
Abrir arquivo build.cmd, você pode ver a seguinte frase
: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:
mvn clean package
(Explicação: maven projecto para limpar, e, em seguida, embalada)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 pilotoCALL
Chama um programa em lotes a partir de outro.
Referência: o Windows CMD comando Daquan e explicações detalhadas e gramática