Além de escrever código na maioria das vezes, os programadores gastam muito tempo depurando o código. É até dizer que está depurando o código ou está prestes a depurar o código. :)
Hoje, falaremos sobre algumas dicas para depurar o código e algumas maneiras de localizar rapidamente os problemas ao usar os depuradores fornecidos pelo IDE.
Amigos que vêem isso, não pensem em mim como uma festa do título imediatamente. Vamos dar uma olhada. Se você tiver algumas habilidades melhores, deixe uma mensagem.
Vamos ao tópico.
1 depuração multithread
Amigos que desenvolveram muitos aplicativos encadeados devem ter um entendimento. Às vezes, para observar os diferentes estados de variáveis entre vários threads, bem como a aquisição de bloqueios, eles pensam em adicionar um ponto de interrupção para depurar o código.
Quando o ponto de interrupção parar no IDE, você pode mudar para outro encadeamento e executar outros códigos sem se afetar. Obviamente, há um interruptor aqui, que é ativado por padrão no Eclipse.
No entanto, ele não é ativado por padrão na idéia Intellij. Ou seja, se você adicionar um ponto de interrupção no código na idéia, embora um thread quebre, os outros threads já o executaram.
Depois de definir a suspensão do encadeamento para o mesmo modo Eclipse, a depuração de aplicativos com vários thread também pode ser iniciada.
Configurações simples podem estar diretamente no ponto de interrupção e alterar suspensão para thread
Altere as configurações padrão na Idea: Alterne para o botão de rádio "Thread", clique no botão "Faça o padrão" que aparece
Depois que um thread é quebrado, você pode alternar através da janela do encadeamento e continuar funcionando em outros threads.
Mude aqui na ideia intellij
Vemos que o thread principal e o pool-1-thread-1 estão em estado de corrida, e a mudança para qualquer um pode continuar sendo executada.
No momento, você pode escrever um aplicativo multithread e armazenar conteúdo em contêineres que não são seguros como o Arrylist e depois observar por que eles são inseguros de threads e quais problemas ocorrerão, que são vívidos e vívidos.
PS: Deixe -me dizer aqui, é por isso que é recomendável dar um nome significativo ao criar um thread, pelo menos um nome reconhecível. Caso contrário, você não pode distinguir qual encadeamento é seu e é problemático alternar.
2 Execução de volta
A execução atrasada mencionada aqui é que, às vezes, quando depramos o código, cada método é preguiçoso e entra em depuração passo a passo. Quando você observa a alteração de um valor variável, um determinado método não acompanha e o valor muda, e você precisa fazê -lo novamente.
Contando com a função da execução atrasada, você pode atrasar, assim como a função de lamentar o xadrez ao jogar xadrez. Obviamente, o nome desta operação de volta foi nomeado por mim e é chamado de Drop Frame no IDE.
Com essa função, depois de soltarmos o quadro atual, o valor variável alterado não será restaurado. Por exemplo, se você passar uma lista para o método atualmente chamado e adicionar conteúdo à lista no método, depois quando soltar para o local onde o método é chamado, a lista não retornará ao seu estado anterior.
Mas quando o método é chamado novamente, você pode observar quando a lista é alterada, pelo menos não precisa executar o programa novamente. Você pode até recuar se discordar.
3 pontos de interrupção condicional
Para depurar o código, você precisa adicionar pontos de interrupção onde deseja observar alterações e executá -los cuidadosamente passo a passo.
No entanto, se estiver em um loop, ou se o método for chamado por vários threads ao mesmo tempo, você diminui cuidadosamente e descobrirá que não há conteúdo de que se preocupe e desça desde o início do loop, mas se ainda não houver conteúdo, você começará a ficar chateado.
De fato, ao adicionar um ponto de interrupção, podemos adicionar certas condições ao ponto de interrupção, para que o ponto de interrupção entre em vigor somente quando as condições especificadas forem atendidas.
Na idéia Intellij, clique com o botão direito do mouse no ponto de interrupção e a caixa de condição na figura abaixo será exibida, basta inserir as condições especificadas.
Com pontos de interrupção condicional, códigos não relacionados e desinteressados podem ser ignorados diretamente.
4 código de fragmento
Não pensei em que nome expressar isso. Às vezes, durante o processo de depuração, de repente quero entreter um código relacionado a isso, mas não no arquivo de origem para observar -o para ajudar na análise de problemas. Neste ponto, você interrompe o programa, adicionará o código e executá -lo novamente?
Há uma função na idéia para executar trechos de código, que podem executar o código que você escreve temporariamente no contexto do código atual.
Por exemplo, o método atual passa em uma lista, mas esse método não possui um elemento que você precisa usar nas condições subsequentes. Neste momento, você pode usar temporariamente a função da execução do código de fragmento e adicionar uma.
Observe que, no Intellij Idea, o botão acima, como uma pequena calculadora, é uma função temporária. Depois de clicar, a caixa de avaliar a expressão (Ctrl+F8) abaixo do botão será exibida. Digite o código e clique em Avalie no canto inferior direito. O valor de retorno será exibido no resultado.
Isso é equivalente a alterar temporariamente o conteúdo da variável.
Em seguida, você também pode chamar os métodos do objeto, executar funções, obter valores de atributo etc.
5 Visualizar valor de modificação variável
Cada IDE fornece uma janela para observar o valor da variável de contexto atual ao depurar o código. De fato, além da visualização, alguns tipos básicos não finais também podem ser modificados diretamente aqui. Dessa forma, se vários loops forem executados, o valor esperado poderá ser restaurado a cada vez e não há necessidade de reiniciar o programa.
Códigos comumente usados completam automaticamente as teclas de atalho
| Chave de atalho | ilustrar |
|---|---|
| Sout | System.out.println (""); |
| psvm | Método principal |
Configurações comuns
Chaves de atalho comumente usadas
| Chave de atalho | ilustrar |
|---|---|
| Alt + ctrl + s | Abra as configurações |
| Alt + Ctrl + Shift + S | Open Project Structrue |
| Alt + digite | Correção rápida |
| Alt + / | Conclusão automática de palavras |
| Alt + inserir | Código gerado automaticamente, como setter, getter, tostring, etc. |
| Alt + Shift + V | Mover membros da classe para outra classe |
| Ctrl + Shift + F | Código de formato |
| Ctrl + Shift + U | Troca de casos |
| Ctrl + Shift + i | Exibir definições de código de acordo com o contexto atual, por exemplo: quando o cursor parar no método, a definição do método será exibida na maneira PopUpview. |
| Ctrl + Clique | Salte para o código -fonte |
| Shift + Shift | Pesquise todos os arquivos |
| Ctrl + e | Abra a lista de arquivos acessados recentes |
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.