Déboguer Sans Points d Arrêt

Autres langues : English Español Deutsch 日本語 한국어 Português 中文

Dans un scénario de débogage typique, vous définiriez des points d’arrêt pour indiquer au débogueur quand suspendre votre programme. Un point d’arrêt correspond généralement au moment qui marque le point de départ pour une investigation plus approfondie.

Décider où placer un point d’arrêt peut être difficile. Il peut y avoir des situations où la ligne exacte n’est pas claire, ou vous pourriez préférer mettre le programme en pause en fonction du timing plutôt que d’un code spécifique.

Dans cet article, nous examinerons la fonctionnalité Pause Program d’IntelliJ IDEA - une technique de débogage moins connue qui peut être extrêmement puissante dans certains scénarios, y compris ceux décrits ci-dessus. Nous discuterons de ses cas d’utilisation et de ses limitations, et découvrirons l’astuce secrète de pas à pas.

Qu’est-ce que Pause ?

Pause Program est une fonctionnalité du débogueur d’IntelliJ IDEA qui vous permet de suspendre arbitrairement votre application à n’importe quel moment donné. De plus, vous n’avez même pas besoin de connaître le code de l’application. En fait, vous pouvez simplement l’ignorer complètement !

'Bouton 'Pause Program' sur la barre d'outils du débogueur 'Bouton 'Pause Program' sur la barre d'outils du débogueur

Pour mettre un programme en pause, cliquez sur Pause Program dans la barre d’outils du débogueur. Ensuite, le programme se suspendra au milieu de ce qu’il fait.

Limitations

À première vue, un programme en pause peut ressembler exactement à celui qui a été suspendu à un point d’arrêt. Cependant, cela n’est vrai que dans une certaine mesure.

Le débogueur reste le même que ce soit par Pause ou par un point d'arrêt pour suspendre l'application. Le débogueur reste le même que ce soit par Pause ou par un point d'arrêt pour suspendre l'application.

Il serait correct de considérer Pause Program comme une sorte de thread dump plus. Vous pouvez toujours inspecter les variables et les threads comme vous le feriez habituellement, mais certaines des fonctionnalités de débogage plus avancées, comme Evaluate Expression, ne fonctionneront pas.

Cas d’utilisation

Il existe d’innombrables façons d’utiliser Pause Program. Souvent, il peut être utilisé de manière interchangeable avec les points d’arrêt traditionnels. Cependant, il existe des scénarios où l’utilisation de Pause Program est une approche plus appropriée. Considérons quelques-uns d’entre eux.

Applications qui ne répondent pas

Si vous rencontrez un blocage de l’interface utilisateur, c’est généralement parce que le thread UI est bloqué.

La pile du thread UI bloqué montre quelle méthode il est en train d'exécuter actuellement. La pile du thread UI bloqué montre quelle méthode il est en train d'exécuter actuellement.

Pause Program pourrait être utile dans ce cas, car il vous permet de mettre l’application en pause pendant qu’elle ne répond pas et d’examiner la pile d’appels du thread UI. C’est souvent suffisant pour diagnostiquer le problème.

Sources manquantes

Comme mentionné précédemment, Pause Program vous permet simplement d’ignorer le code source, qui pourrait de toute façon être manquant pour vous. Bien que ce scénario ne soit pas très courant, lorsque vous le rencontrez, les points d’arrêt ne seraient d’aucune aide.

C’est là que Pause Program entre en jeu !

mème du chat hehe

Verrous

Si vous soupçonnez un problème de synchronisation, comme un deadlock ou un livelock, Pause Program pourrait vous aider à trouver les threads et les verrous exacts qui causent le problème.

La liste des threads montre quels threads ont abouti à un blocage. La liste des threads montre quels threads ont abouti à un blocage.

Dans ce cas, mettez le programme en pause et inspectez la liste des threads. Elle montrera quels threads sont bloqués. En naviguant vers le point d’exécution, vous verrez également les sections critiques dans lesquelles ils sont verrouillés. Ces informations pourraient vous aider à vous orienter vers une solution.

L’astuce secrète de pas à pas

Comme je l’ai souligné précédemment, Pause Program limite effectivement votre accès à certaines des fonctionnalités avancées du débogueur. Si vous avez essayé d’utiliser certaines fonctionnalités pendant qu’une application est en pause, vous avez peut-être vu un message d’erreur indiquant Cannot evaluate methods after Pause action.

Message d'erreur indiquant 'Impossible d'évaluer les méthodes après l'action de pause' Message d'erreur indiquant 'Impossible d'évaluer les méthodes après l'action de pause'

Néanmoins, il existe une solution de contournement pour cette restriction.

Après avoir mis une application en pause, procédez en effectuant n’importe quelle action de pas à pas. Step Into ou Step Over feront l’affaire. Une fois cela fait, vous vous retrouverez dans une session de débogage normale, similaire à lorsque vous suspendez une application en utilisant un point d’arrêt. Toutes les fonctionnalités avancées sont maintenant déverrouillées !

Conclusion

C’est tout pour aujourd’hui ! J’espère que vous trouverez ces trucs et astuces utiles.

S’il y a quelque chose de spécifique concernant le débogage Java que vous voulez que je couvre, n’hésitez pas à me contacter ! Vos retours aideront à prioriser et publier le contenu qui vous intéresse le plus.

all posts ->