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

94

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

Benstpierre
la source

Réponses:

128

La pile d'appels de votre application peut être affichée dans le débogueur. En utilisant la fonctionnalité "Drop Frame", vous pouvez "revenir" à une image de pile précédente, en un sens remontant dans le temps. Cela peut être utile pour entrer de nouveau dans une fonction si vous avez manqué un point critique que vous aimeriez revoir.

Comme le nom "Stack Frame" le suggère, les modifications déjà apportées à l'état global (comme les variables statiques, les modifications des valeurs de champ et autres) 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 en être conscient - 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 long processus particulier 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, les effets secondaires qui auraient pu se produire - par exemple le trafic réseau, les manipulations de fichiers, la sortie de la console, etc. - ne peuvent pas être rétrogradés.

Daniel Schneller
la source
14

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

Voir plus d'informations ici .

Jorge Ferreira
la source
7

Supprimer des cadres de la pile à l'aide du débogueur vous permet essentiellement de "rembobiner" l'exécution de votre application pour atteindre un état antérieur. Les variables en dehors du cadre de pile ne sont pas inversées.

En remarque, je crois que cette fonctionnalité s'appelle "Drop to Frame" dans Eclipse, mais elle sert le même objectif.

Dolph
la source