web-dev-qa-db-fra.com

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

J'essaie de dépanner une JUnit. Dans le code source, j'ai défini le 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 dans la ligne d’initialisation du champ statique. Mais cela ne s'arrête pas dans le cas de test. Peu importe où j'ai défini le point d'arrêt dans le scénario de test, le débogueur ne s'arrête pas là. Je sais avec certitude que le scénario de test est exécuté car je peux voir les messages de journal que j'ai ajoutés apparaissent dans le journal.

Toute aide serait grandement appréciée.

J'utilise Eclipse Galileo et JUnit4 Launcher.

91
Roy

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

Si cela s'avère effectivement être le problème, vous devriez passer à une version supérieure du JDK (ce n'est pas une garantie cependant, puisque des correctifs ont été publiés pour 6u16, 6u18 et 7b1 ). La meilleure solution consiste à utiliser le drapeau -XX: + UseParallelGC. L'augmentation de la taille minimale et maximale du segment de mémoire, pour retarder le premier GC, apporte un soulagement temporaire.

À propos, utilisez ce rapport de bogue dans Eclipse pour suivre la progression des autres.

39
Vineet Reynolds

La solution pourrait être aussi simple que de cliquer sur Exécuter/Ignorer tous les points d'arrêt. Travaillé pour moi.

91
user1164035

Assurez-vous, sous Exécuter> Configurations de débogage, que l'option "Arrêter en mode principal" est sélectionnée, le cas échéant.

50
Answerer

Habituellement, lorsque cela m’arrive (cela est rare mais cela se produit), cela signifie que le code en cours d’exécution est différent de celui de l’éditeur. Il arrivera de temps en temps pour Eclipse que les classes construites et le code dans l'éditeur soient désynchronisés. Lorsque cela se produit, j'obtiens une sorte de comportement bizarre du débogueur (débogage de lignes vides, saut de lignes de codes, etc.).

Redémarrez Eclipse, nettoyez tous les projets et reconstruisez tout, en règle générale. J'avais aussi les plugins Maven (les anciennes versions ... ne l'avaient pas depuis longtemps) qui avaient tendance à le faire aussi.

Sinon, cela pourrait être un bug, peut-être celui que Vineet a déclaré,

J'espère que cela t'aides

19
Newtopian

Vous avez peut-être accidentellement ignoré tous les points d'arrêt de la barre d'outils Eclipse. Pour résoudre ce problème, accédez à Eclipse -> Exécuter -> Ignorer tous les points d'arrêt.

17
Jigna.Shah

Projet -> Clean a semblé travailler pour moi sur JRE 8

3
JH95

Supprimez tous les points d'arrêt et rajoutez-les.

2

Pour que le débogueur fonctionne avec remote, les fichiers Java .class doivent être complétés avec les informations de débogage. Si " - g: none "option a été transmise au compilateur, le fichier de classe n'aura pas les informations nécessaires et par conséquent le débogueur ne sera pas en mesure de faire correspondre les points d'arrêt du code source avec cette classe distante. En attendant, si les fichiers jars/class étaient obfuscated , ils n'auront pas non plus d'informations de débogage. Selon vos réponses, ce n'est probablement pas votre cas, mais ces informations pourraient être utiles aux autres personnes confrontées à la même problème.

2
sergeyan

Assurez-vous de déclarer le paquet en haut. Dans mon code groovy, cela s'arrête aux points de rupture:

package Pkg1

import Java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

Cela ne s'arrête pas aux points d'arrêt:

import Java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...
1
Don Harrington

Pour JDK7, exécutez-> Configurations de débogage, cochez la case "Laisser JUnit actif après un test lors du débogage".

1
Frank Fu

Cela m'est arrivé une fois, quand j'avais décoché "Exécuter> Construire automatiquement" et que j'avais oublié de le vérifier à nouveau.

1
Mathiouss

Dans mon cas, le problème était que je n'avais pas ouvert la vue Debug dans la perspective Debug, alors:

1 - Assurez-vous d’avoir ouvert la perspective de débogage:

Eclipse debugger not working 1

2 - Assurez-vous que la vue de débogage est ouverte:

Eclipse debugger not working 2

1
Dani

Pour supprimer les points d'arrêt :

  1. Déboguez votre classe comme test junit
  2. Lorsque votre débogueur s’arrête, cliquez sur l’onglet "points de rupture" en regard de "variables" et "expressions".
  3. En haut à droite de l'onglet Point d'arrêt, cliquez sur le bouton avec deux "X"
  4. Arrêtez le test, remplacez votre point d'arrêt et exécutez à nouveau le débogueur.
0
Cyrois

Si rien ne marche-

  1. Supprimez cette configuration de débogage distant/local et créez-en une nouvelle.
  2. Ajoutez la source dans les configurations de débogage.
0
kanaparthikiran

Un commentaire supplémentaire concernant la réponse de Vineet Reynolds.

J'ai découvert que je devais mettre -XX:+UseParallelGC dans Eclipse.ini

J'ai configuré les arguments de la machine virtuelle (vm) comme suit

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

cela a résolu le problème.

0
Amir Pauker

Vérifiez également si les points d'arrêt des autres lignes fonctionnent, il peut s'agir d'un bogue dans le débogueur. J'ai eu un problème avec le débogueur Eclipse où placer un point d'arrêt sur une affectation booléenne dont le code était sur la ligne suivante ne fonctionnait pas . J'ai signalé ceci ici , mais le mettre sur la ligne précédente ou suivante l’a fait.

0
Henno Vermeulen

Aller à Right click->Debug Configuration et vérifiez si trop d’instances de débogage sont créées. Mon problème a été résolu lorsque j'ai supprimé plusieurs instances de débogage de la configuration et que le débogage venait de démarrer.

0
priyanka_rao

Un autre problème possible est que le port du débogueur peut être bloqué par le pare-feu. Par exemple, j'utilisais mule anypoint studio (v 5.4.3). Le port de débogueur par défaut est 6666. Lorsqu'un flux est exécuté, il ne s'arrête pas au point d'arrêt. lorsque j'ai changé le port sur un autre (par exemple 8099), cela a bien fonctionné.

0
RuntimeException

Créer un nouvel espace de travail a fonctionné pour moi.

0
Ahmed Tawila

Si vous êtes sur Eclipse,

Faites un clic droit sur le dossier de votre projet sous "Package Explorer".

Aller à la source -> Nettoyer et choisir votre projet.

Cela nettoiera tout désordre et votre point d'arrêt devrait fonctionner maintenant.

0
Sureshbabu E

Dans mon cas, j'avais plusieurs projets dans le même espace de travail. Le fichier Java que je tentais de déboguer était présent dans plusieurs projets avec le même package.

Je n'avais pas besoin de l'autre projet, alors fermez simplement les projets non liés (ou supprimez le fichier d'un projet non lié).

0
Shanu Gupta