100 votes

Eclipse - le débogueur ne s'arrête pas au point d'arrêt

J'essaie de résoudre un problème avec un JUnit. Dans le code source, j'ai placé un point d'arrêt à deux endroits : 1) dans une ligne où un membre statique est initialisé 2) la première ligne d'un des cas de test.

Le débogueur s'arrête à la ligne d'initialisation du champ statique. Mais il ne s'arrête pas dans le scénario de test. Peu importe où je place le point d'arrêt dans le scénario de test, le débogueur ne s'y arrête pas. Je sais avec certitude que le scénario de test est exécuté car je peux voir les messages que j'ai ajoutés apparaître dans le journal.

Toute aide serait grandement appréciée.

J'utilise Eclipse Galileo et JUnit4 launcher.

1 votes

Votre code est-il compilé avec l'option -g activée pour générer les informations de débogage dans le fichier .class ? C'est obligatoire, bien sûr.

0 votes

Oui, il est compilé avec l'option -g.

0 votes

Pouvez-vous également ajouter des informations sur la version de JUnit et le JRE que vous utilisez ? Je pense que cela est utile dans ce contexte.

102voto

user1164035 Points 206

La correction pourrait être aussi simple que de cliquer sur run/skip all breakpoints. Cela a fonctionné pour moi.

3 votes

Il m'a fallu trois jours pour me rendre compte que j'avais en quelque sorte cliqué sur ce

1 votes

Merci... j'ai dû cliquer sur l'icône de la barre d'outils par accident :-P

4 votes

Merci... aucune idée de quand il a été cliqué.

53voto

Answerer Points 221

Assurez-vous, sous Exécuter > Configurations de débogage, que l'option "Arrêter en cours de route" est sélectionnée, si elle s'applique à votre situation.

1 votes

Veillez à lire les réponses précédentes avant de poster. Le problème venait de leur version jvm et a été résolu il y a trois ans. Il est préférable de ne pas relancer les anciens fils de discussion, à moins que votre réponse n'apporte quelque chose de significatif, qui n'a pas déjà été couvert dans les réponses précédentes.

7 votes

Merci. @Answerer votre réponse a résolu mon problème. C'est étrange que "Stop in main" n'ait pas été réglé.

26 votes

Il semble que sa réponse ait apporté quelque chose de significatif qui n'était pas déjà couvert dans les réponses précédentes :)

39voto

Vineet Reynolds Points 40529

Cela pourrait être lié à l'un des bogues de l'application JDK 6 mise à jour 14, comme indiqué dans les notes de mise à jour de JDK 6 mise à jour 15 .

Si cela s'avère être le problème, vous devriez passer à une version plus récente du JDK (ce n'est pas une garantie, car le système d'exploitation de l'entreprise n'a pas été modifié). Des correctifs ont été publiés pour les versions 6u16, 6u18 et 7b1. ). Le mieux est d'utiliser le drapeau -XX:+UseParallelGC. Augmenter la taille du tas minimum et maximum, pour retarder la première GC, apporte un soulagement temporaire.

Au fait, utilisez ce rapport de bogue dans Eclipse pour savoir comment les autres s'en sortent.

1 votes

J'ai effectué une mise à jour vers JDK 1.6 update 16. Maintenant, il s'arrête à tous les points d'arrêt que j'ai définis. Merci beaucoup pour votre aide.

0 votes

De rien. L'u16 semble être la version où ce problème a été suffisamment corrigé, malgré les notes de version de l'u15.

0 votes

Merci @Vineet - Je m'arrachais les cheveux sur ce point :-)

21voto

Newtopian Points 3335

Habituellement, lorsque cela m'arrive (c'est rare mais ça arrive), cela signifie que le code exécuté est différent du code dans l'éditeur. Il arrive de temps en temps pour Eclipse que les classes construites et le code de l'éditeur ne soient pas synchronisés. Lorsque cela se produit, j'obtiens toutes sortes de comportements bizarres du débogueur (débogage de lignes vides, saut de lignes de codes, etc).

Le redémarrage d'Eclipse, le nettoyage de tous les projets et la reconstruction de tous les éléments permettent généralement de résoudre le problème. J'avais aussi les plugins Maven (anciennes versions... je ne les avais plus depuis un moment maintenant) qui avaient tendance à faire ça aussi.

Sinon, il pourrait s'agir d'un bogue, peut-être celui que Vineet a indiqué,

J'espère que cela vous aidera

0 votes

Oui, ce que vous avez dit se produit davantage dans les IDE qui ne recompilent pas automatiquement le code. Oracle JDeveloper (d'après mon expérience personnelle) et dans une moindre mesure (Netbeans) ont été jugés insuffisants.

1 votes

De bons conseils. Pas assez dit. Parfois, on réfléchit trop au problème alors que c'est juste le système qui est désynchronisé. Comme c'est le cas avec le redémarrage d'un ordinateur pour résoudre des problèmes simples.

0 votes

Merci, c'était le problème dans mon cas. Cela semble stupide, mais un simple nettoyage et F5 après une construction ont fait le travail.

1voto

duffymo Points 188155

Votre code est-il compilé avec l'option -g activée pour générer les informations de débogage dans le fichier .class ? C'est obligatoire, bien sûr.

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