Vous pouvez utiliser le drop to frame d' Eclipse commande pour ressaisir la méthode actuelle à partir du haut. Mais il ne déroulera pas les changements d'état qui se sont produits, donc cela peut ne pas fonctionner selon le type de méthode dans lequel vous vous trouvez.
Omniscient Debugger est un autre outil vraiment cool qui vous permet de revenir en arrière et d'avancer dans le temps . Il fonctionne en instrumentant les classes au fur et à mesure qu'elles sont chargées dans le chargeur de classe, afin de pouvoir enregistrer tout ce que fait votre code. Il peut faire des choses très intéressantes, comme répondre "quand, où et pourquoi ce champ a-t-il été affecté à sa valeur actuelle?". L'interface utilisateur est plutôt maladroite et elle peut avoir du mal à gérer de grandes bases de code, mais dans certains cas, elle 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 des mêmes choses que l'ODB.
Au-delà de ce qui a été mentionné dans les réponses précédentes - c'est-à-dire la fonctionnalité drop to frame d'Eclipse dans la vue de débogage , qui redémarre le débogage plus tôt dans le frame de pile (mais ne rétablit pas les données globales / statiques) et le débogueur Omniscient , qui est un peu brut et pas tellement évolutif - il existe quelques outils basés sur Eclipse qui pourraient être utilisés pour «revenir en arrière» dans le temps (d'exécution):
JIVE étend le débogueur Java Eclipse avec la possibilité d'enregistrer les états du programme. La perspective JIVE fournit des diagrammes UML utiles qui sont mis à jour pendant l'exécution du programme. Ces diagrammes donnent une vue d'ensemble de l'état de l'application (diagramme d'objets) et de la trace de pile (diagramme de séquence). Vous pouvez interroger la trace mémorisée et avancer et reculer dans le temps et voir les diagrammes correspondants.
Diver enregistre uniquement les appels de méthode et n'enregistre pas vraiment les états de programme comme JIVE. Chaque événement d'appel de méthode est stocké pour une récupération et une analyse ultérieures. Il étend les configurations Java Run et Debug principalement pour spécifier des filtres. La trace peut être interrompue / reprise / filtrée lors de l'exécution. Une fois enregistrée, la perspective Diver peut l'afficher dans un diagramme de séquence interactif.
JIVE et Diver sont des projets open source issus de la recherche académique. Depuis novembre 2012, les deux projets sont actifs.
Chronon est un produit commercial, mais ils ont des licences gratuites pour les étudiants et des projets open source. D'après ce qui est déclaré sur leur site Web, c'est probablement l'enregistreur le plus complet car il est capable de rejouer l'historique enregistré, de faire des allers-retours, permettant comme on dit le débogage dans le temps. Eclipse n'est pas non plus nécessaire pour l'enregistrement.
Tous ces plugins sont assez gourmands en ressources, il est donc préférable d'avoir une bonne machine de spécifications et d'utiliser leur fonction de filtre. Une exigence définitive pour les exécuter avec succès est d' étendre l'espace du tas dans eclipse.ini .
Dans mon cas, j'ai essayé d'utiliser JIVE et Diver pour déboguer un programme d'analyse XML, mais j'ai toujours fini par geler l'éclipse en raison du manque de ressources. Diver peut être difficile à exécuter sur Linux 64 bits , il fonctionne sur ubuntu 32 bits et éventuellement d'autres distributions 32 bits en utilisant ces conseils . Diver fonctionne sur Windows, mieux encore sur une JVM Windows 64 bits + 64 bits sinon vous serez limité à un espace de tas maximum de 1,3-1,6 Go sur Windows 32 bits . JIVE fonctionne très bien sur mon Linux 64 bits et semble fonctionner correctement sur d'autres plates-formes.
la source
Oui , Eclipse CDT prend en charge la fonction de débogage historique.
Ouvrir la configuration de débogage -> Débogueur -> Activer le débogage inversé au démarrage .
Ensuite, vous pouvez appuyer sur
shift+F5
oushift+F6
pour reculer commeF5
ouF6
pour avancer.la source
Je suis partial, mais Chronon fait exactement ce que vous recherchez.
Drop to Frame ne revient pas exactement en arrière, car si la méthode a changé quoi que ce soit sur le tas, elle ne sera pas inversée.
la source
Je cherchais également cette fonctionnalité dans Eclipse. Je sais que le studio visuel peut le faire. En fait, vous pouvez faire glisser le marqueur de ligne actuel et le déposer n'importe où dans le code. Je ne suis pas sûr que les modifications apportées aux variables puissent être annulées. Mais il est toujours très utile et permet de gagner beaucoup de temps. J'attendais ça en éclipse depuis très longtemps.
la source
La question ne spécifie pas de langage Eclipse et la plupart des réponses supposent Java.
Si vous utilisez C ++ et GCC avec le débogueur GDB, Eclipse a
Run->Move to Line
qui fait le travail et fonctionne comme l' instruction suivante de Visual Studio Set . Dans ce cas, Eclipse utilise la fonctionnalité de GDB.Si vous utilisez Java, je ne connais pas un moyen d'y parvenir avec Eclipse ou Netbeans, bien que d'autres réponses aient suggéré des plugins. Eclipse a la commande "drop to frame" qui fonctionne pour Java dans ma version (Juno SR1). Si je modifie et enregistre du code dans une fonction en mode débogage, la ligne d'exécution se déplace automatiquement vers le haut de la fonction actuelle et je peux continuer à partir de là. Ce n'est pas la même chose que de spécifier la ligne, mais c'est quelque chose.
la source