Como desenvolvedor, é necessário dominar as habilidades de depuração no ambiente de desenvolvimento. Ao escrever programas Java, geralmente encontramos vários problemas inexplicáveis. Para detectar onde o programa é problemático, geralmente precisamos adicionar logs para ver o valor das variáveis, de modo que a depuração é muito problemática. Suponha que eu gaste 1 hora por dia depurando minha inscrição, será muito tempo se acumular. Por esse motivo, use esse tempo para valorizar e entender todos os recursos que nos fazem depurar de maneira mais conveniente. Isso pode economizar algum tempo e também tornará sua vida mais confortável e relaxada.
1. Visualização de depuração
As janelas mais usadas na depuração são:
| janela | ilustrar |
|---|---|
| Janela de depuração | Exibe principalmente a pilha de chamadas do método de encadeamento atual, bem como o número de linhas de código (código com informações de depuração) |
| Janela dos pontos de interrupção | => Janela da lista de Breakpoint, que pode facilitar a adição de pontos de interrupção, definindo condições de ponto de interrupção, excluindo pontos de interrupção, etc. |
| Janela de variáveis | => Exibir a variável local do método atual, o método não estático, incluindo este aplicativo, pode modificar e alterar o valor da variável |
| Janela de edição de código | => Escusado será dizer mais |
| Janela do console de saída | => Logs e outro conteúdo de saída. Durante a depuração, você pode definir o nível de atenção do componente como um pouco menor para obter várias informações de saída. |
Além disso, as janelas auxiliares são:
| janela | ilustrar |
|---|---|
| Janela de expressão de expressão | => Escreva a expressão dos dados que você precisa observar ou modificar o valor do medidor |
| Janela de exibição | => Pode executar blocos de código, conteúdo de saída etc. na exibição |
| Janela de contorno de contorno | => Veja os métodos, variáveis, etc. da classe atual |
| Tipo de janela de hierarquia | => Verifique o nível de herança da classe atual, incluindo interfaces de implementação e níveis de herança de classe |
| Método Chamada Relacionamento Chamada Janela de Hierarquia | => Verifique quais métodos são chamados, quais classes são chamadas e qual linha é o método correspondente pode ser aberto diretamente |
| Janela de pesquisa de resultados de pesquisa | => Combinando teclas de atalho, você pode visualizar os locais de código que são referenciados ou definidos no espaço de trabalho, projeto e conjuntos de trabalho. |
1) Vista completa da janela:
2) Visualização de depuração (visualização da pilha de thread):
A visualização de depuração permite que você gerencie o programa sendo depurado e executado na bancada. Ele mostra os quadros de pilha dos threads suspensos no programa que você está depurando, e cada thread no programa aparece como um nó da árvore. Ele mostra o processo para cada destino que está em execução. Se o thread for suspenso, seu quadro de pilha será exibido como um elemento filho. Aqui estão alguns botões de depuração comumente usados:
1. Indica que a implementação atual continua a ser executada até o próximo ponto de interrupção, e a tecla de atalho é F8.
2. Significa interromper todo o processo
3. Significa entrar no método atual, e a chave de atalho é F5.
4. Significa executar a próxima linha de código, e a tecla de atalho é F6.
5. Significa sair do método atual e retornar à camada de chamada. A chave de atalho é F7.
6. Representando a pilha do tópico atual, do qual você pode ver qual código está em execução e todo o processo de chamada, bem como o número da linha do código
Introdução detalhada:
Pule todos os pontos de interrupção: defina todos os pontos de interrupção para ignorar. Depois de definir todos os pontos de interrupção, haverá uma barra em todos os pontos de interrupção, indicando que o ponto de interrupção será ignorado e o thread não será suspenso no ponto de interrupção.
Drop to Frame: Este comando permite que o programa retorne ao início do método atual e inicie a execução novamente. Você pode reexecionar o quadro de pilha Java. Você pode selecionar um quadro de pilha especificado e clicar em Drop no quadro, para poder novamente novamente o quadro de pilha especificada. Preste atenção ao uso do Drop to Frame:
1. Não é possível entrar no método na pilha de métodos já executados.
2. Ao entrar no quadro da pilha, o valor original dos dados globais não será alterado. Por exemplo, uma verter que contém elementos não será limpa.
Filtros de etapas: esta função é relativamente simples. Quando queremos ignorar algumas classes nas quais não prestamos atenção ao depurar, podemos ativar os filtros de etapas para filtrar. O programa continuará sendo executado até que uma posição ou ponto de interrupção não filtrado seja encontrado. A função Filtros de etapa consiste em quatro itens: use filtros de etapas, editar filtros de etapas, tipo de filtro e pacote de filtro. As operações específicas são as seguintes:
Etapa 1: Windows -> Preferências -> Java -> Debug -> Filtragem de etapas.
Etapa 2: Selecione 'Use Filtros de etapas'
Etapa 3: selecione a opção desejada na tela. Você pode adicionar parte do código em sua própria base de código.
Etapa 4: Clique em 'Aplicar'
Em princípio, o comando Editar etapa do filtro é usado para configurar regras de filtro de etapas, enquanto o tipo de filtro e o pacote de filtro Consulte os tipos Java filtrados e o pacote Java, respectivamente.
Retorno da etapa: Roupa do método atual. Durante a execução do método chamado, o uso do retorno da etapa sairá do método e retornará ao método que chama o método depois de executar todo o código do método atual.
Passo: Ao executar uma única etapa, ao encontrar uma subfunção na função, ela não entrará na subfunção para executar uma única etapa, mas interromperá toda a execução da subcunção, ou seja, toda a subfunção é tomada como uma etapa.
Entre: Entre em: Entre, entre e continue a entrar ao encontrar uma subcunção.
Resistência: Restaurando o fio pausado e pulando diretamente da posição atual para a próxima posição do ponto de interrupção.
Suspender: pause o fio selecionado e você pode navegar ou modificar o código, verificar os dados etc.
O Eclipse suporta a suspensão e a recuperação do encadeamento por meio de suspensão e currículo. De um modo geral, o Suspender é adequado para a depuração de programas multithread. Quando precisamos visualizar o quadro da pilha e os valores variáveis de um determinado thread, podemos suspender o encadeamento através do comando suspender. O currículo é usado para recuperação.
Existem dois tipos de currículo que precisam de atenção:
O primeiro é modificar o código do programa durante o processo de depuração, salvá -lo e clicar em currículo, e o programa será temporariamente suspenso no ponto de interrupção.
A segunda é que, quando o programa for uma exceção, o currículo de execução e o programa também serão suspensos temporariamente no ponto de interrupção.
Terminar: o Eclipse encerra a depuração de programas locais através do comando de encerramento.
Desconectar: o Eclipse usa o comando desconectado para encerrar conexões de soquete para JVMs remotos.
1. Depuração e execução
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 6.4 | Informação de passo | F5 | -> Entre (se houver uma chamada de método, ele entrará no método de chamada para depuração); |
| 6.4 | Passo | F6 | -> Pule o passo a passo (em qualquer chamada de método que não insira a linha, execute diretamente a linha atual de código e pule para a próxima linha); |
| 6.4 | Etapa retornar | F7 | -> retornar em uma única etapa (execute o método atual, coloque o método atual da pilha de chamadas e retorne ao local da chamada em que o método atual é chamado); |
| 6.5 | Retomar | F8 | -> retoma a execução normal (até que o próximo ponto de interrupção seja encontrado); |
| 7.4 | Correr para a linha | Ctrl+r | -> Executar para a linha atual (todos os pontos de interrupção no meio serão ignorados e executados na linha em que o cursor atual está localizado); |
| 6.3 | Cair no quadro | nenhum | -> Voltar ao início do método especificado, essa função é bastante boa. Clique com o botão direito do mouse em um método na pilha de chamadas do método e selecione Drop para enquadrar para executar desde o início do método, por exemplo, reexecionar esse método. Você pode usar o Drop to Frame neste método para reexecutá-lo a partir da primeira linha deste método. Obviamente, para métodos com efeitos colaterais, como operações de banco de dados, alterando o conteúdo do objeto dos parâmetros passados, etc., pode ser reexecionar o conteúdo do conteúdo que você deseja. |
| 6.1+6.2 | Cópia pilha | nenhum | -> Copie as informações atuais da pilha de threads |
Se você precisar excluir algumas classes, pacotes, etc. Durante a depuração, poderá usar as configurações de filtros de etapas de edição.
Propriedades do A6: Informações de inicialização do processo Java, incluindo parâmetros de inicialização do console, parâmetros de ambiente etc. Se houver algum problema com os parâmetros de inicialização do parâmetro, você poderá verificar primeiro se os parâmetros de inicialização reais aqui estão incorretos. Você também pode visualizar as opções relevantes para máquinas virtuais para apoiar a depuração.
2. Visualização de dados
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 7.4 | Inspecionar | Ctrl+Shift+i | -> Exibir a variável selecionada, o valor da expressão ou o resultado da execução, pressione Ctrl+Shift+I novamente para adicionar a expressão ou valor atual à janela Expressões para visualizar; |
| 7.4 | Mostrar | Ctrl+Shift+d | -> Exiba a variável selecionada, o valor da expressão ou o resultado da execução. Pressione Ctrl+Shift+D novamente para adicionar a expressão ou valor atual à janela de exibição para exibir; |
| 7.4 | Executar | Ctrl+u | -> Executar expressão de seleção; |
| 7.4 | Correr para a linha | ctrl+r | -> Executar para a linha atual (todos os pontos de interrupção no meio serão ignorados e executados na linha em que o cursor atual está localizado); |
| 7.3 | Todas as instâncias | Ctrl+Shift+n | -> Ver todos os objetos da classe selecionada, essa função é excelente; |
| 7.3 | Contagem de instâncias | nenhum | -> Veja o número de todos os objetos na classe selecionada; |
| 7.4 | Assistir | nenhum | -> Adicione a variável atual e a expressão à janela Expressões; |
3) Visualização de variáveis (visualização variável)
1. Para a visualização de nome da variável, exiba todas as variáveis de instância e variáveis locais que podem ser acessadas na linha de código atual.
2. Exiba todos os valores variáveis
3. O valor variável pode ser alterado através desta janela
Variáveis A exibição exibe informações variáveis relacionadas ao quadro da pilha selecionado na visualização de depuração. Ao depurar os programas Java, as variáveis podem optar por exibir informações mais detalhadas no painel Detalhes. Além disso, os objetos Java também podem exibir os valores das propriedades que eles contêm. Selecione a variável nesta janela e clique com o botão direito do mouse para executar muitas operações, as principais operações são as seguintes:
Todas as instâncias: abra uma caixa de diálogo para exibir todas as instâncias da classe Java. O uso dessa função requer a máquina virtual Java para suportar a recuperação da instância.
Todas as referências :: Abra uma caixa de diálogo para exibir todos os objetos Java que fazem referência à variável.
Alterar valor :: altere o valor da variável. Esta função pode ser usada em conjunto com o Drop to Frame para depuração do programa. Use essas duas funções em vez de re-debugar
Copiar variáveis: copie o valor de uma variável, especialmente quando o valor da variável é muito longo (como os dados JSON), essa função é útil.
Encontre: às vezes, quando há muitas variáveis em uma classe, você pode pesquisar.
4) Visualização dos pontos de interrupção (visualização do ponto de interrupção)
1. Mostre todos os pontos de interrupção
2. Invalide a porta selecionada na janela 1 atual e clique em Ativar novamente.
3.Ponsception Breakpoint
A visualização dos pontos de interrupção listará todos os pontos de interrupção que você definir no intervalo de trabalho atual. Clique duas vezes no ponto de interrupção para inserir o local do ponto de interrupção no programa. Você também pode ativar ou desativar pontos de interrupção, excluir, adicionar novos e agrupá -los com base em grupos de trabalho ou contagens de acertos. Existem duas técnicas que são muito úteis ao usar pontos de interrupção:
Contagem de acertos: ele especifica quantas vezes o segmento de código é executado em um ponto de interrupção. O mais típico é um loop. Se um loop for executado 10 vezes e o thread for suspenso, o valor da contagem de acertos será 10 e o loop atual ficará pendurado quando for executado em 9º.
Condicional: Como o nome sugere, é um julgamento condicional. Por exemplo, quando precisamos fazer loop variável i == 10, o thread suspende, a condição é definida como i == 10 e selecione suspender quando "true".
Se a contagem de acertos e condicional forem selecionados acima, será inválido se as configurações de expressão e valor não forem razoáveis. Se você selecionar suspender quando o valor mudar, o condicional poderá pendurar quando o valor da variável mudar.
5) Vista de expressões (Vista de expressão)
1. Expressões
2. Clique aqui para adicionar uma nova expressão
Para encontrar o valor de uma expressão no editor da perspectiva de depuração, selecione a linha inteira com o conjunto de pontos de interrupção e selecione a opção Inspecionar no menu de contexto. A expressão é avaliada no contexto do quadro de pilha atual e o resultado é exibido na visualização de expressões da janela de exibição. Por exemplo, se eu quiser calcular o valor da variável A+B, posso adicionar uma expressão à visão da expressão: a+b
6) Visualização de exibição
Você pode usar essa visualização para inserir ou calcular algum novo código. Este código é executado no contexto do local de depuração atual, o que significa que você pode usar todas as variáveis e até assistentes de conteúdo. Para executar seu código, basta marcar-o e usar o menu do clique com o botão direito do mouse ou Ctrl+U (execute) ou Ctrl+Shift+I (Verifique)
7) Janela auxiliar de visualização de código
1. Vista de código:
Visualização de código, usada para exibir código específico. A parte verde refere -se ao código que está sendo executado atualmente
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 11.1 ~ 11.5 | Hierarquia de tipo rápido | Ctrl+T. | Verifique o nível de herança da classe e interface atuais. Ao entrar por padrão, a subclasse da herança/implementação da classe/método atual é exibida e a sub-interface 11.1 é exibida; Ctrl+t Novamente, a superclasse/interface 11.2 Herança/implementação da classe e interface atual será exibida. Durante a depuração, essa função é frequentemente usada para visualizar a classe de implementação 11.4 na chamada do método da interface ou da classe abstrata e navegar diretamente até o método de implementação correspondente 11.5. |
| Esboço rápido | Ctrl+o | Confira o esboço da classe atual, incluindo métodos, atributos, etc.; é de pouco uso; | |
| declarações abertas | F3 | Veja as definições de variáveis, propriedades e métodos |
2. Janela de hierarquia de chamadas:
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 12.1 ~ 12.2 | Hierarquia de chamadas aberta | ctrl+alt+h | Verifique o método chamado nível, você pode ver onde o método atual é chamado 12.1, ou o método atual chama outras classes de métodos 12.2 |
3. Janela de hierarquia do tipo:
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 13.1 ~ 13.4 | Hierarquia de tipo aberto | F4 | Verifique o nível de herança, você pode visualizar o nível de herança da classe, incluindo a classe dos pais da classe criança 13.1 ou o nível de herança 13.2 da interface implementado pela classe. O esboço da classe 13.3 e 13.4 será exibido à direita de acordo com a classe/interface selecionada; 13.3 pode escolher se deve exibir as propriedades, métodos etc. da interface da classe/pai/pai. |
4. Janela de pesquisa:
| marca | Função | Chave de atalho | descrever |
|---|---|---|---|
| 14.1 | Declarações | Ctrl+g | A mesma assinatura do método é definida no espaço de trabalho e no pacote de jar de terceiros 14.1 |
| 14.2 | Referências | ctrl+shif+g | As variáveis, propriedades e métodos atualmente selecionados são referenciados no espaço de trabalho e no pacote JAR de terceiros 14.2 |
| 14.3 | Ctrl+Shift+U. | Veja onde as variáveis, propriedades e métodos aparecem na classe atual14.3 | |
| 14.4 | Implementos | Veja a classe 14.8 que implementa a interface atual | |
| 14.4 ~ 14.7 | Método de exibição | Você pode escolher diferentes métodos de exibição e ver a imagem para obter detalhes |
2. Debug
1. Defina o ponto de interrupção
No arquivo de código-fonte, na linha marcada na frente da linha de código que você deseja definir o ponto de interrupção, clique duas vezes no botão esquerdo do mouse para definir o ponto de interrupção e clique duas vezes novamente na mesma posição para cancelar o ponto de interrupção. Às vezes, ainda temos essa necessidade, ou seja, não quero executar o código linha por linha. Por exemplo, um loop for loop mais de 1.000 vezes. Eu só quero deixar o tópico ficar para depurar na 500ª vez. Neste momento, podemos usar pontos de interrupção condicional. Defina pontos de interrupção da condição: podemos definir condições de acionamento para esse ponto de interrupção. Depois que uma certa condição é atendida, podemos começar a depurar. Você pode clicar com o botão direito do mouse no ponto de interrupção e selecionar propriedades do ponto de interrupção para inserir a página Configurações do ponto de interrupção. Quando estávamos conversando sobre a visão do ponto de interrupção, aprendemos o uso da contagem de acertos e condicional. Aqui podemos definir as condições e o número de execuções.
1.1) Tipo de ponto de interrupção e janela do ponto de interrupção
Existem cinco tipos de pontos de interrupção que podem ser definidos durante a depuração:
1. Pontos de interrupção da linha: pontos de interrupção condicional, como o nome indica, são pontos de interrupção com certas condições. Somente quando as condições definidas pelo usuário forem atendidas, o código parará quando for executado para o ponto de interrupção.
2. Pontos de interrupção do método: o especial sobre pontos de interrupção do método é que eles podem ser atingidos no código -fonte do JDK. Como o JDK remove as informações de depuração durante a compilação, os pontos de interrupção comuns não podem ser atingidos por dentro, mas os pontos de interrupção do método são possíveis. Você pode visualizar a pilha de chamadas do método através deste método.
3. Observe pontos de interrupção (relógio de alteração de acesso variável para pontos de interrupção)
4.Ponsception Points de interrupção
5 pontos de interrupção de carga de classe
As configurações de cada tipo de ponto de interrupção são um pouco diferentes. Você pode clicar com o botão direito do mouse no ponto de interrupção -> Propriedades do ponto de interrupção para defini -lo, mas geralmente há uma interface de configuração rápida na janela do ponto de interrupção. Há mais filtro nas propriedades do ponto de interrupção, o que é realmente inútil e não é muito útil.
Chaves de atalho relacionadas ao ponto de interrupção:
| Chave de atalho | ilustrar |
|---|---|
| Ctrl+Shift+b | Grande ponto de interrupção/cancelar ponto de interrupção no cursor |
| ctrl+alt+b | Ignore todos os pontos de interrupção |
| Alt+shift+q, b | Ative a janela do ponto de interrupção |
1. Ponto de interrupção da linha: pontos de interrupção 1.1 e 1.4 em uma determinada linha no método. Os pontos de interrupção da linha podem definir a condição de suspensão do encadeamento/VM 1.3 e o número de acessos 1.2.
A condição em 1.3 é que, quando a primavera registra a definição do feijão (RegisterBeandEfinition), se for org.springframework.demo.mybean, o thread será suspenso e você poderá iniciar a depuração passo a passo.
Para o uso da contagem de acertos 1.2, geralmente está no loop. Se houver um problema com o enésimo processamento de objetos, defina a contagem de acertos = N. Durante o Re-Debug, pode ser conveniente parar de depurar quando o número de loops que precisam ser depurados.
2. pontos de interrupção do método: pontos de interrupção 2.1 e 2.2 no método. A vantagem dos pontos de interrupção do método é que eles podem parar e depurar ao entrar ou sair do método do método. Eles são semelhantes aos pontos de interrupção da linha, e apenas pontos de interrupção da linha e pontos de interrupção do método têm as funções de definição de condições e tempos de acesso.
No entanto, os pontos de interrupção do método têm outra vantagem. Se o código for compilado, o ponto de interrupção da linha especificado não funcionará, para que você possa apenas pressionar pontos de interrupção do método.
Se você estiver interessado, pode remover o gancho antes de adicionar o número da linha ... através de A1 e depurar e dar uma olhada.
3. Observe pontos de interrupção: pontos de interrupção 3.1 e 3.3 acertar nas variáveis de membros. Somente as variáveis do membro do objeto têm efeito, as variáveis estáticas de membros não funcionam.
Você pode definir o thread/vm 3.2 a ser suspenso quando a variável for acessada ou definida, ou seja, todos os métodos de acesso ou definição de variáveis de membro semelhante ao 3.4 serão monitorados.
4. Ponto de interrupção da exceção: pontos de interrupção da exceção podem ser adicionados ao 4.6 ou clique na saída da classe Exception Informações nas informações do log.
Exceção Breakpoint 4.1. Quando ocorre uma exceção no sistema, o encadeamento/VM é suspenso na posição de arremesso da exceção capturada ou na exceção Localização 4.2 e 4.4 que o programa não captura e também pode especificar se as subclasses que incluem exceções também são detectadas 4.3 e 4.5.
Além da suspensão anormal definida acima, você pode definir a execução de suspensão de Java-> Debug, principalmente dois:
1. Se a execução suspenda em exceções não capturadas ocorre. Durante a depuração, sempre há uma exceção suspender que afeta a depuração, mas nenhum ponto de interrupção de exceção está definido, você pode verificar esta opção;
2. Seja suspenso durante os erros de compilação, essa situação geralmente ocorre ao depurar e modificar o código;
Outra coisa a mencionar é que o aplicativo com o método principal é iniciado. Você pode verificar a parada no A3 principal na configuração de depuração. Quando o programa entrar, o tópico será suspenso e aguardando a depuração.
5. Classe Carregando ponto de interrupção: o ponto de interrupção 5.1 foi atingido no nome da classe. Os pontos de interrupção de carregamento da classe não podem ser definidos na interface, mas as classes abstratas estão OK. No entanto, durante a depuração, os pontos de interrupção não inserirão obviamente o carregador de classe. Sabe-se que a entrada passo a passo inserirá o método de construção da subclasse. Depois de suspender o encadeamento, as classes não abstracas entrarão no carregador de classe (se não houver filtragem do filtro) 5.3. Se o ponto de interrupção de carregamento da classe é atingido em uma classe abstrata ou não abstratada, o thread/vm5.2 será suspenso quando a classe for carregada pela primeira vez ou a primeira subclasse for carregada pela primeira vez.
2. Depure o programa
1. Debug Local Java Language Programs
Entre toda a depuração, a depuração de um programa Java está o mais fácil, incluindo principalmente definir pontos de interrupção, iniciar a depuração, passar e terminar a depuração.
1) Defina pontos de interrupção:
2) Iniciar a depuração: o Eclipse fornece quatro maneiras de começar a depuração do programa (lançamento), a saber, através do menu (Run> Debug), Icon ("Green Bed Bug"), Right-> Debug AS e Shortcut Key (F11). Nesse sentido, é semelhante a outros comandos (como a execução).
Um rápido aparece. Você precisa mudar para o espaço de trabalho de depuração, verificar "Lembre -se da minha decisão", lembre -se de selecionar e nenhum prompt será solicitado na próxima vez e clique em [Sim].
3) Execução de uma etapa única: Use principalmente várias visualizações mencionadas acima para depuração, entre as quais vários botões na visão de depuração têm teclas de atalho:
Etapa Retuen (F7)
Passo (F6)
Entre (f5)
Depuração final: encerrar a depuração do programa local através do comando de encerramento.
2. Case
Cenário 1: Xiao Ming escreveu um executor de tarefas, que foi executado continuamente. Depois de executá -lo on -line por um período de tempo, ele descobriu que havia uma probabilidade de algumas falhas. Depois de correr por um período de tempo, o executor de tarefas saiu de forma anormal. Por ser um ponteiro nulo, Xiao Ming queria depurar localmente e não sabia onde estava o ponto de interrupção. Esse problema é um evento probabilístico e pode não aparecer necessariamente. Então, depois que Xiao Ming depurou várias vezes, ele ficou tonto e nem conseguia ver o código claramente. Xiao Ming queria ter um ponto de interrupção, parar e deixá -lo encontrar o problema sempre que ocorre uma exceção de ponteiro nulo. Isso seria ótimo.
Ponto de interrupção da exceção
Ponto de interrupção de exceção: no processo de localizar um problema, você geralmente encontra pontos de interrupção que não podem ser atingidos na posição apropriada, o que é muito diferente do ponto de gatilho do problema. Portanto, neste momento, você também pode tentar um ponto de interrupção de exceção. Como o nome sugere, um ponto de interrupção de exceção refere -se a um ponto de interrupção que pendura automaticamente depois de lançar uma certa exceção.
Clique na parte vermelha para adicionar um ponto de interrupção anormal
Digite o tipo de exceção que você deseja localizar, como NullPointerException. Dessa forma, depois que qualquer exceção do NullPointerException for lançada no sistema, o encadeamento atual será suspenso, dando a você a chance de localizar o problema.
Cena 2: Xiao Ming escreveu um enorme loop. Ao ajustar o código, Xiao Ming descobriu que sempre que o loop atinge a 100.000ª vez, havia um problema e não atendia às suas expectativas. Então Xiao Ming fez um ponto de interrupção no loop, querendo ver o que estava acontecendo, mas Xiao Ming nunca pensou em como seria difícil chegar a 100.000 loops. Nesse momento, Xiao Ming já havia começado a pensar muito, se pudesse haver um ponto de interrupção:
Se o número de loops == 100000, o tópico parar
Ponto de interrupção condicional
Conforme mostrado na figura à direita, loop 1000 vezes. Se você quiser parar ao fazer um loop para 500 vezes, pode criar um ponto de interrupção condicional e clicar com o botão direito do mouse no ponto de interrupção para pendurar propriedades do ponto de interrupção.
Selecione Ativar condição
No espaço em branco, adicione sua própria condição. Se a condição retornar verdadeira, o thread será suspenso. Se falso, a exceção será ignorada.
A contagem de acertos suspende oficialmente o fio depois que o ponto de interrupção passa. Se estiver definido como 500, as primeiras 499 vezes serão expressas e não pararão após o ponto de interrupção. Quando o ponto de interrupção é a 500ª vez, o ponto de interrupção suspende o encadeamento atual.
expressão
As expressões podem visualizar algumas linhas de comando que não estão disponíveis no código atual para facilitar o posicionamento de problemas.
Cena 3: Xiao Ming encontrou um problema recentemente. Sempre há problemas ao chamar um plug-in de terceiros. Xiao Ming suspeitava que era um bug do plug-in de terceiros, mas Xiao Ming não encontrou o código-fonte e não conseguiu depurar. O que Xiao Ming deve fazer?
Debug direcionando plug-ins de terceiros
1. Descompilar o código usando a ferramenta de decompile
2. Filtre o código -fonte descompilado
3. Corrija erros de compilação do código -fonte
4. Debug
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.