7
votes

Quel débogueur Java * vous * utilisez

Je passe beaucoup de temps à déboguer des applications dans Eclipse à l'aide de JPDA. Il y a quelques problèmes avec le débogueur Eclipse qui m'énerve vraiment. Quelqu'un peut-il recommander des plug-ins, de meilleurs debuggers ou peut-être des tours que je ne connaissais pas encore?

  • Dans l'onglet "Variables", vous pouvez saisir et exécuter des bits de code Java. Cependant, vous devez d'abord cliquer sur quelque chose (je clique habituellement sur "Ceci") pour lui donner un contexte. Ensuite, après que vous ayez tapé dans une longue expression Java pour déboguer quelque chose et «exécuter», votre expression est remplacée par le résultat. Vous devez donc la saisir à nouveau. Existe-t-il d'une meilleure façon, comme une console ou quelque chose qui me manque?
  • Lorsque vous manquez dans des structures de données, la présentation dans le débogueur laisse beaucoup à désirer. Vous voyez la représentation interne des listes, des cartes, des Stringbuilders, etc. Ce que je veux voir, c'est ce que ces objets contiennent conceptuellement. Y a-t-il une façon de le faire, d'utiliser peut-être un autre débogueur, une extension ou quelque chose?
  • Lorsqu'une exception est lancée, existe-t-il un moyen d'inspecter l'état de l'application où l'exception a été lancée? Actuellement, j'ai besoin de définir des points d'arrêt juste avant que l'exception ne se produise puis essayez de le reproduire.
  • Quand je sortez sur une ligne avec de nombreuses déclarations, je ne peux pas réellement voir laquelle de ces déclarations est exécutée, sauf en "entrant" à chacun pour voir où il me prend.
  • Si aucun code source n'est trouvé, Eclipse ne regarde que pour vous. Vous obtenez un écran utile en disant "Editeur de fichier de classe / code source non trouvé" qui est totalement inutile. Je préférerais de loin être capable de passer à travers les bytecodes afin que je puisse au moins voir ce qui se passe. Est-ce que quelqu'un sait d'un débogueur Java qui fait cela mieux que Eclipse?

1 commentaires

Dupliqué possible de Recommander un débuger Java


8 Réponses :


3
votes

J'utilise Netbeans et son débogueur.

À propos de votre troisième point (Exceptions): Je ne pense pas qu'il y ait une autre façon de voir l'état au point où l'exception est lancée. Lorsque l'exception est jetée hors de la méthode, le cadre de la pile de cette méthode a été rejeté - il est perdu de sorte que vous ne puissiez pas inspecter la diffusion.

Le débogueur NetBeans ne vous permet également pas de passer par ByTecode, autant que je sache.


0 commentaires

1
votes

Ordinairement, je dirais que Eclipse a un meilleur débogage que mon IDE préféré, Intellij (Edition gratuite) pour les quatre premiers, Intellij est peut-être meilleure avec des points d'arrêt sur des exceptions (qui vous permettent de voir l'état au point à la suite de l'exception. est lancé), les rendriers personnalisés pour les types d'objets et les expressions persistantes (c'est-à-dire que l'expression est réévaluée chaque fois que vous modifiez le contexte)

Je ne connais aucun débogueur qui participera au code d'octet.


1 commentaires

"Intellij est peut-être meilleure avec des points d'arrêt sur des exceptions (qui vous permettent de voir l'état au point lorsque l'exception est lancée)" - Eclipse le fait aussi.



11
votes

J'utilise le débogueur Eclipse depuis un moment et partagez certaines de vos préoccupations. Cependant, certains des points que vous mentionnez ont été résolus / adressés dans le débogueur Eclipse:

Structures de données: La vue Variables a déjà la possibilité d'afficher la "structure logique" des listes / des ensembles / des tableaux, etc. Il existe un bouton dans le coin supérieur gauche de cette vue pour activer ceci. Vous pouvez également ajouter vos propres représentations personnalisées dans les préférences Java-> Débogou-> Structures logiques.

Exceptions: Le débogueur vous permet de définir des points d'arrêt d'exception (Ajouter un bouton d'arrêt d'exception Java dans la vue Points d'arrêt). Ces points d'arrêt sont déclenchés lorsqu'une exception particulière est lancée.

code source: si vous installez un plugin (p. Ex. ASM Byte Code Code Plugin http://asm.ow2.org/ Eclipse / Index.html ) comportant un spectateur pour Bytecode, le débogueur passera par le bytecode lorsque le code source est manquant.


0 commentaires

4
votes

Je suis d'accord avec une grande partie de ce que dit Vilas Jagannath.

Utiliser le débogueur Eclipse Points supplémentaires:

1) la vue d'affichage. Cette vue vous permet d'exécuter du code dans le contexte du cadre de pile actuel. Cela vous permet d'inspecter des bits de code arbitraires. D'une certaine manière, c'est un peu primitif, mais cela fonctionne bien comme un tampon de gratter.

4) Si vous souhaitez passer à une méthode, appelez une ligne avec une expression complexe, vous pouvez naviguer vers cette fonction, puis «exécuter à la ligne» (Ctrl + R)

5) Vous pouvez également utiliser Step Filtres pour filtrer des cours que vous ne vous souciez pas. Faites un clic droit sur le cadre de pile que vous ne vous souciez pas et appuyez sur «Type de filtre». Assurez-vous d'avoir «Utiliser des filtres à pas». C'est l'icône avec deux flèches à droite du bouton de châssis de la chute de la vue de débogage.


0 commentaires

3
votes

Voici ma réponse - Les balles sont dans le même ordre que votre question balles:

  • Il y a une meilleure façon de le faire:
    1. Utilisez la vue d'affichage pour exécuter des instructions.
    2. écrire quelque chose sur la classe elle-même et "inspecter" it (Ctrl + Maj + i)
    3. Voir la petite icône dans la vue Variables qui indique "Structure logique". Ce pourrait être ce que vous recherchez.
    4. Vous pouvez définir un point d'arrêt général à l'exception pour attirer l'exception car cela se produit - dans les exceptions, consultez le J! icône.
    5. J'utilise Ctrl + Alt + souris de gauche Cliquez sur la méthode que je souhaite intervenir, fonctionne comme un charme!
    6. Vous pouvez toujours utiliser des touches ou des boutons (voir la pile). Si vous voulez voir le code, utilisez Decompiler.

      Je crois qu'ils ont toujours quoi d'améliorer mais ces conseils pourraient vous aider un peu.


0 commentaires

1
votes

Quand je marche sur une ligne avec De nombreuses déclarations sur elle, je ne peux pas voir qui de ces déclarations est en cours d'exécution, sauf en "pas en marche dans "à chacun de voir où il faut moi.

Sélectionnez la fonction que vous souhaitez entrer dans et utiliser "pas en sélection" (je l'ai sur Ctrl-F5, mais vous pouvez le trouver dans le menu contextuel).


0 commentaires

0
votes

Au fur et à mesure de la variante, vous pouvez litière votre code avec log.debug et system.out.println's, ce qui signifie que vous pouvez faire ce que vous voulez!


0 commentaires

0
votes

Pour quelque chose de différent d'un débogueur d'interface graphique, j'ai un projet appelé JDIScript qui vous permet de scripter L'interface Java de débogueur de JVM. Je l'ai constaté particulièrement utile pour dépanner la conflit de discussion et la recherche de problèmes qui ne semblent que surprendre sporadiquement sous des charges de production.


0 commentaires