web-dev-qa-db-fra.com

Déplacement du pointeur d'instruction lors du débogage de Java dans Eclipse

Puis-je déplacer le pointeur d'instruction directement vers une ligne de mon choix (dans la méthode actuelle) lors du débogage d'un programme Java dans Eclipse (Galileo)?

Il est facile de faire glisser le pointeur d'instruction sur la ligne souhaitée dans une méthode dans Visual Studio, mais je ne vois pas comment le faire dans Eclipse (et je ne trouve rien à ce sujet dans la documentation ou sur Google).

51
Eric J.

Ce n'est pas possible.

Si vous voulez simplement exécuter du code à l'emplacement actuel, vous pouvez utiliser la vue Expressions et entrer votre code en tant qu'expression. Les méthodes appelées par l'expression expression seront exécutées dans le contexte de débogage actuel.

15
ankon

C'est possible...

http://help.Eclipse.org/galileo/index.jsp?topic=/org.Eclipse.jdt.doc.user/tips/jdt_tips.html

Drop to frame - Lorsque vous parcourez votre code, vous pouvez parfois aller trop loin ou survoler une ligne dans laquelle vous vouliez vous engager. Plutôt que de redémarrer votre session de débogage, vous pouvez utiliser la commande Déposer vers Action sur les cadres pour revenir rapidement au début d’une méthode. Sélectionnez Le cadre de la pile correspondant à la méthode Java que vous souhaitez redémarrer, , Puis sélectionnez Déposer dans une barre d'outils de la vue Débogage ou dans le menu contextuel du . Le pointeur d'instruction en cours sera réinitialisé sur la première instruction exécutable De la méthode. Cela fonctionne également pour les images Non superposées.

Notez que Drop to frame est uniquement disponible lors du débogage avec une machine virtuelle 1.4 ou Supérieure ou la machine virtuelle J9. Dans certaines situations, une machine virtuelle peut être incapable de supprimer les images souhaitées de la pile. Par exemple, il est Généralement impossible de passer au cadre inférieur de la pile ou à Une image sous une méthode native.

30
John S.

Déplacer le pointeur comme dans Visual Studio n'est pas possible, mais les solutions de contournement sont les suivantes:

Pour revenir au début de la méthode en cours d’exécution: Sélectionnez la méthode dans la pile d’appels de débogage, cliquez avec le bouton droit de la souris sur -> "Abandonner pour encadrer" méthode.

Maintenant, pour atteindre votre ligne désirée, sélectionnez la ligne en cliquant dessus et appuyez sur ctrl + r ou faites un clic droit sur la ligne et sélectionnez "Exécuter en ligne".

Ces techniques sont extrêmement utiles et réduisent massivement les efforts de débogage, profitez-en!

1
fl0w

J'aime mieux la réponse d’ankon, mais une autre option (qui ne fonctionnera que pour votre cas particulier) consiste à s’arrêter à un point d’arrêt sur votre if et à modifier la ou les variables évaluées dans la condition afin qu’elles renvoient false la vue "Variables", faites un clic droit sur une variable et cliquez sur "Modifier la valeur ...")

0
violoncello

malheureusement, il n’est pas possible d’avancer avec le pointeur d’instructions (compteur de programme). Vous devez donc introduire vos propres variables de "débogage" que vous pouvez tester - supposons que vous souhaitiez parcourir une boucle trop longue, ajoutez ensuite une variable et testez sa valeur accrue, puis encapsulez la boucle dans un if avec cette variable. Je sais que c'est moche, mais ça se fait - ou vous pourriez simplement développer en C++ :-) 

0
serup

Une astuce que j’utilise consiste à taper un espace dans votre classe, dans un endroit sûr, comme dans la ligne de commentaire; supprimez-le immédiatement et enregistrez la classe. Cela force le point d'exécution à sauter au début de votre méthode actuelle. Ce n’est pas idéal, j’admets, mais cela peut parfois servir de solution de contournement pour atteindre ce que vous voulez.

Bien que l'installation par défaut d'Eclipse ne permette pas de déplacer directement le point d'exécution comme dans Visual Studio, il peut exister un plug-in Eclipse fournissant cette fonctionnalité quelque part. Faites une recherche autour.

0
IqbalHamid

Je pensais que c'était totalement possible dans les anciennes versions d'Eclipse. Je pensais avoir la mémoire pour le faire, mais je suppose que je viens d'implanter cette mémoire lorsque je travaillais dans Visual Studio. D'après ce que je lis, cela pourrait venir de la JVM et non d'Eclipse lui-même, il y a des pages où il est suggéré que la JVM ne puisse pas gérer cela.

À mon avis, Eclipse est bien plus performant que VS, j’ai beaucoup travaillé dans les deux domaines et, depuis que j’ai découvert Eclipse, je souffrais toujours lorsque je devais travailler dans VS. Mais ne pas avoir cette fonctionnalité fait vraiment mal en ce moment hehe.

0
user1294431

Vous pouvez accéder directement à tout autre appel de méthode dans la méthode actuellement déboguée. Sélectionnez un appel de méthode sous le pointeur de votre instruction actuelle et utilisez " Aller à la sélection " dans le menu contextuel.

0
Bananeweizen