首頁> Java> java教程> 主體

Depurar sem Pontos de Interrupção

王林
發布: 2024-08-14 10:38:40
原創
758 人瀏覽過

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 funcionalidadePause Programdo 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 emPause Programna 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 considerarPause Programuma espécie dethread 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, comoEvaluate Expression, não funcionarão.

Casos de uso

Existem inúmeras maneiras de usarPause Program. Frequentemente, pode ser usado de forma intercambiável com os pontos de interrupção tradicionais. Contudo, há cenários onde usarPause 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 Programpoderia 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 Programpermite 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 quePause Programentra 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 Programpode 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 Programlimita 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 dizCannot 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 IntoouStep Overservirã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ê.

以上是Depurar sem Pontos de Interrupção的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!