"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Depurar sem Pontos de Interrupção

Depurar sem Pontos de Interrupção

Publicado em 14/08/2024
Navegar:676

Leia em outras línguas: English Español 中文

Em um cenário típico de depuração, você definiria pontos de interrupção para indicar ao depurador quando suspender seu programa. Um ponto de interrupção geralmente corresponde ao momento que marca o ponto de partida para uma investigação mais aprofundada.

Decidir onde definir um ponto de interrupção pode ser desafiador. Pode haver situações em que a linha exata não esteja clara, ou você pode preferir pausar o programa com base no tempo, em vez de um código específico.

Neste artigo, vamos dar uma olhada na funcionalidade Pause Program do IntelliJ IDEA – uma técnica de depuração menos conhecida que pode ser extremamente poderosa em alguns cenários, inclusive nos descritos acima. Discutiremos seus casos de uso e limitações, além de descobrir o segredo do passo a passo.

O que é Pause?

Pause Program é uma funcionalidade do depurador do IntelliJ IDEA que permite pausar arbitrariamente sua aplicação em qualquer ponto no tempo. Além disso, você nem precisa conhecer o código da aplicação. Na verdade, você pode simplesmente ignorá-lo!

Depurar sem Pontos de Interrupção

Para pausar um programa, clique em Pause Program na barra de ferramentas do depurador. Então, o programa será interrompido bem no meio do que estiver a fazer.

Limitações

À primeira vista, um programa em pausa pode parecer exatamente como aquele que foi suspenso em um ponto de interrupção. No entanto, isso só é verdade até certo ponto.

Depurar sem Pontos de Interrupção

Seria correto considerar Pause Program uma espécie de thread dump mais. Você ainda pode inspecionar tão variáveis quanto threads da forma que normalmente faria. Porém, algumas das funcionalidades mais avançadas, como Evaluate Expression, não funcionarão.

Casos de uso

Existem inúmeras maneiras de usar Pause Program. Frequentemente, pode ser usado de forma intercambiável com os pontos de interrupção tradicionais. Contudo, há cenários onde usar Pause Program é uma abordagem mais adequada. Vamos considerar alguns deles.

Aplicativos irresponsivos

Se você encontrar um congelamento da interface do usuário (UI), isso geralmente se deve ao bloqueio da thread da UI.

Depurar sem Pontos de Interrupção

Pause Program poderia ser útil nesse caso, pois permite pausar a aplicação enquanto ela está irresponsiva e examinar a pilha de chamadas da thread da UI. Isso é geralmente suficiente para diagnosticar o problema.

Fontes ausentes

Como mencionado anteriormente, Pause Program permite que você simplesmente ignore o código fonte, que pode estar ausente para você de qualquer maneira. Embora este cenário não seja muito comum, quando você depara com ele, os pontos de interrupção não seriam de nenhuma ajuda.

É aqui que Pause Program entra em ação!

Depurar sem Pontos de Interrupção

Travas

Se você suspeitar de um problema de sincronização, como um deadlock ou um livelock, Pause Program pode ajudá-lo a encontrar as threads e travas exatas que estão causando o problema.

Depurar sem Pontos de Interrupção

Neste caso, pause o programa e inspecione a lista de threads. Ela mostrará quais threads estão bloqueadas. Ao navegar até o ponto de execução, você também verá as seções críticas em que estão trancadas. Essas informações podem ajudar a orientá-lo em direção a uma solução.

Dica secreta de passo a passo

Como mencionei anteriormente, Pause Program limita seu acesso a algumas das funcionalidades avançadas do depurador. Se você tentou usar certas funcionalidades enquanto uma aplicação está pausada, você pode ter visto uma mensagem de erro que diz Cannot evaluate methods after Pause action.

Depurar sem Pontos de Interrupção

No entanto, há um atalho para essa restrição.

Depois de ter pausado uma aplicação, prossiga executando qualquer ação passo a passo. Step Into ou Step Over servirão. Feito isso, você estará em uma sessão de depuração regular, semelhante a quando você suspende uma aplicação usando um ponto de interrupção. Todas as funcionalidades avançadas estão agora desbloqueadas!

Conclusão

É isso por hoje! Espero que você ache estas dicas e truques úteis.

Se você está interessado em mais artigos relacionados com a depuração e o perfilamento, confira alguns dos meus outros artigos:

  • Debugger.godMode() – Hackear uma Aplicação JVM com o Depurador
  • Solução de Problemas de Lentidão do Depurador
  • Depurando Aplicativos Inativos
  • O Que Está Errado com createDirectories()? - Guia de Perfil de CPU

Se houver algo específico sobre a depuração em Java que você queira que eu aborde, não hesite em entrar em contato! A sua opinião ajudará na priorização e publicação do conteúdo que é mais interessante para você.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/flounder4130/depurar-sem-pontos-de-interrupcao-5ekk?1 Caso haja alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3