132 votes

Revenir en arrière dans le débogueur Eclipse

Avoir un débogueur est absolument inestimable pour que mon code fonctionne correctement tout en maintenant mon niveau de frustration.

Cependant, est-il possible de revenir en arrière dans le débogueur Eclipse? Le projet en cours sur lequel je travaille nécessite au minimum 5 secondes pour lire et initialiser les données d'un fichier avant de pouvoir effectuer quoi que ce soit. Si je dépasse le débogueur, je dois terminer le programme et le redémarrer, ce qui prend pas mal de temps.

137voto

Matt McHenry Points 6269

Vous pouvez utiliser Eclipse de la goutte à l'image de la commande à entrer de nouveau la méthode actuelle par le haut. Mais il ne se déroule pas tout de l'état des changements qui ont eu lieu, de sorte qu'il peut ne pas fonctionner selon le type de méthode que vous utilisez.

Un autre outil vraiment cool, qui en fait ne vous laisse pas en arrière et en avant dans le temps est l' Omniscient, le Débogueur. Il fonctionne en instrumentant les classes où ils sont chargés dans le chargeur de classe, de sorte qu'il puisse enregistrer tout ce que votre code ne. Il peut faire très cool de choses, comme réponse "quand, où, et pourquoi ce champ a confié à sa valeur actuelle?". L'INTERFACE est plutôt maladroit, et il peut avoir un moment difficile la gestion de grandes bases de code, mais pour certains cas, il peut vraiment gagner beaucoup de temps.

Mise à jour: Chronon fournit un produit commercial qu'il décrit comme un "DVR pour Java", qui semble faire beaucoup de choses identiques à l'ODB.

47voto

fmjrey Points 758

Au-delà de ce qui a été dit dans les réponses précédentes - c'est à dire de l'Éclipse, la baisse à l'image de la fonctionnalité dans la vue de débogage, ce qui relance le débogage plus tôt dans le cadre de la pile (mais ne pas revenir global/données statiques) et Omniscient, débogueur, ce qui est un peu brute et pas tellement d'évoluer il y a quelques outils basés sur Eclipse qui pourrait être utilisé pour "revenir en arrière" (exécuter)temps:

  • JIVE: Java Visualisation Interactive de l'Environnement
  • Plongeur: Dynamique Des Vues Interactives Pour L'Ingénierie Inverse
  • Chronon: Un "enregistreur de données de vol" pour les programmes Java

JIVE s'étend Eclipse Java débogueur avec la possibilité d'enregistrer le programme de des états. Le JIVE perspective présente quelques diagrammes UML qui sont mis à jour lorsque le programme est en cours d'exécution. Ces diagrammes donnent un aperçu de l'état de l'application (diagramme d'objets) et de la trace de la pile (diagramme de séquence). Vous pouvez interroger la mémoire de la trace et de l'étape d'avant en arrière dans le temps et voir les diagrammes correspondant.

Plongeur seuls les enregistrements des appels de méthode et n'a pas vraiment d'enregistrement de programme de des états comme JIVE. Chaque appel de la méthode de l'événement est stocké pour plus tard, de recherche et d'analyse. Elle s'étend de la Java, Exécuter et Déboguer des configurations principalement pour spécifier des filtres. La Trace peut être mis en pause/reprise/filtré lors de l'exécution. Une fois enregistré, le Plongeur peut l'afficher dans une séquence interactive diagramme.

JIVE et le Plongeur sont open source projets issus de la recherche universitaire. En novembre 2012, les deux projets sont actifs.

Chronon est un produit commercial, mais ils ont des licences libres pour les étudiants et les projets open source. À partir de ce qui est annoncé sur leur site web, il est probablement le plus complet du graveur car il est en mesure de rejouer l'histoire, à l'étape d'avant en arrière, en permettant que disent-ils du temps à voyager de débogage. Aussi Eclipse n'est pas nécessaire pour l'enregistrement.

L'ensemble de ces plugin sont très gourmands en ressources, il est donc préférable d'avoir une bonne spec de la machine et d'utiliser leur fonction de filtre. Une certaine obligation de les exécuter avec succès est d' étendre l'espace de tas dans eclipse.ini.

Dans mon cas, j'ai essayé d'utiliser JIVE et Plongeur pour déboguer une analyse XML programme, mais finissait toujours par la congélation de l'éclipse en raison du manque de ressources. Plongeur pourrait être difficile à exécuter sur linux 64 bits, il fonctionne sur ubuntu 32 bits et peut-être d'autres 32bit distributions à l'aide de ces conseils. Plongeur fonctionne sur Windows, mieux encore, sur un Windows 64 bits + JVM 64 bits sinon, vous serez limité à un maximum d'espace de tas de 1,3-1,6 Go sur windows 32 bits. JIVE fonctionne très bien sur mon linux 64bit, et semble fonctionner sur d'autres plates-formes.

13voto

Sergei Points 385

Oui, Eclipse CDT prend en charge la fonctionnalité de débogage historique.
Ouvrez la configuration de débogage -> Debugger -> Activez le débogage inversé au démarrage.
Ensuite, vous pouvez appuyer sur Maj + F5 ou Maj + F6 pour un pas en arrière, comme F5 ou F6 pour un pas en avant.

5voto

pdeva Points 4597

Je suis partial, mais Chronon fait exactement ce que vous recherchez.

Drop to Frame n'est pas exactement un pas en arrière, car si la méthode a changé quelque chose sur le tas, elle ne sera pas annulée.

3voto

Je cherchais aussi cette fonctionnalité dans Eclipse. Je sais que le studio visuel peut le faire. En réalité, vous pouvez faire glisser le marqueur de ligne actuel et le déposer n'importe où dans le code. Je ne sais pas si les modifications apportées aux variables peuvent être annulées. Mais cela reste quand même très utile et fait gagner beaucoup de temps. J'attendais cela depuis très longtemps dans éclipse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X