web-dev-qa-db-fra.com

Lorsque vous utilisez le débogueur Java dans Intellij, que signifie "Drop Frame"?

J'utilisais le Java dans Intellij 8 et j'ai remarqué un bouton intitulé "drop frame", quelqu'un sait-il à quoi cela sert? Comment/pourquoi cela serait-il utilisé/utile?

90
benstpierre

La pile d'appels de votre application peut être consultée dans le débogueur. En utilisant la fonctionnalité "Drop Frame", vous pouvez "retomber" sur un cadre de pile précédent, dans un sens remontant dans le temps. Cela peut être utile pour ressaisir une fonction si vous avez raté un point critique que vous aimeriez revoir.

Comme le nom "Stack Frame" le suggère, les modifications qui ont déjà été apportées à l'état global (comme les variables statiques, les modifications des valeurs de champ, etc.) ne seront pas annulées, seules les variables locales sont réinitialisées. Cela peut conduire à un chemin d'exécution différent de celui qui a conduit à l'origine à votre point d'arrêt. Vous devez être conscient de cela - je considère souvent que c'est une fonctionnalité utile pour explorer différents chemins d'exécution sans avoir à redémarrer l'application ou un processus particulièrement long qui a conduit à la pile actuelle. Combiné avec le changement de valeurs de variable également disponible via le débogueur, vous pouvez faire toutes sortes de choses intéressantes.

Veuillez noter que, bien sûr, tout effet secondaire qui pourrait s'être produit - e. g. trafic réseau, manipulations de fichiers, sortie de la console, etc. - ne peut pas être rembobiné.

120
Daniel Schneller

Drop Frame dans le débogueur fait apparaître le cadre de pile actuel et remet le contrôle sur la méthode appelante, en réinitialisant toutes les variables locales. Ceci est très utile pour parcourir plusieurs fois une fonction, mais soyez averti: les mutations de champ ou les changements d'état globaux resteront.

Voir plus d'informations ici .

13
Jorge Ferreira

La suppression d'images de la pile à l'aide du débogueur vous permet essentiellement de "rembobiner" l'exécution de votre application pour atteindre un état précédent. Les variables en dehors du cadre de pile ne sont pas inversées.

En remarque, je pense que cette fonctionnalité est appelée "Drop to Frame" dans Eclipse, mais elle sert le même objectif.

7
Dolph