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

97

J'essaye de résoudre un problème avec 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 de l'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 cas de test est exécuté car je peux voir les messages de journal que j'ai ajoutés apparaître dans le journal.

Toute aide serait grandement appréciée.

J'utilise Eclipse Galileo et le lanceur JUnit4.

Roy
la source
1
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 nécessaire, bien sûr.
duffymo
Oui, il est compilé avec l'option -g.
Roy
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.
Vineet Reynolds
Le JDK utilisé est d'ailleurs plus important (il y a des JDK désordonnés qui pourraient causer cela). Veuillez ignorer la requête sur la version de JUnit.
Vineet Reynolds
Désolé, j'aurais dû l'inclure. JDK 1.6 mise à jour 14.
Roy

Réponses:

39

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

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

À propos, utilisez ce rapport de bogue dans Eclipse pour suivre l'évolution des autres.

Vineet Reynolds
la source
1
Je suis passé à la mise à jour 16 du JDK 1.6. Maintenant, il s'arrête à tous les points d'arrêt que j'ai définis. Merci beaucoup pour votre aide.
Roy
De rien. u16 semble être la version où cela a été corrigé dans une assez bonne mesure, malgré les notes de publication d'u15.
Vineet Reynolds
Merci @Vineet - Je m'arrachais les cheveux sur celui-ci :-)
Jim Garrison
@VineetReynolds: J'ai vu vos précieuses réponses concernant Jboss et Java ee 6. pouvez-vous m'aider à résoudre ce problème? stackoverflow.com/questions/28954323/…
brain storm
96

Le correctif peut être aussi simple que de cliquer sur exécuter / ignorer tous les points d'arrêt. A travaillé pour moi.

user1164035
la source
3
il m'a fallu trois jours pour repérer que j'avais en quelque sorte cliqué dessus
henry
1
Merci ... doit avoir cliqué sur cette icône de la barre d'outils par accident :-P
kenyee
4
Merci ... aucune idée quand cela a été cliqué
njfife
1
Merci beaucoup. Pour les autres utilisateurs, dans cette situation, si vous créez un point d'arrêt, il apparaîtra barré.
saurabheights
La même chose m'est arrivée. Je n'ai jamais cliqué dessus ... !! Version: Mars Release (4.5.0) ID de build: 20150621-1200
Beezer
52

Assurez-vous, sous Exécuter> Configurations de débogage, que «Arrêter dans main» est sélectionné, si cela s'applique à votre situation.

Répondeur
la source
1
Veuillez vous assurer de lire les réponses précédentes avant de publier. Le problème était 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 à moins que votre réponse n'apporte quelque chose de significatif, qui n'était pas déjà couvert dans les réponses précédentes.
Leigh
6
Merci. @Answerer votre réponse a résolu mon problème. Il est étrange que "Stop in main" n'ait pas été activé.
Yu Shen
25
Il semble que sa réponse ait apporté quelque chose d'important qui n'était pas déjà couvert dans les réponses précédentes :)
scubbo
Notez qu'il s'agit d'une option pour les applications Java mais pas pour les applications Android.
Noumenon
21

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

Redémarrer Eclipse, nettoyer tous les projets et tout reconstruire efface généralement les choses. J'avais aussi les plugins Maven (les anciennes versions ... ne l'avaient pas eu depuis un moment maintenant) qui avaient tendance à faire ça aussi.

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

J'espère que cela t'aides

Newtopian
la source
Oui, ce que vous avez dit se produit davantage dans les IDE qui ne recompilent pas automatiquement le code. Oracle JDeveloper (par expérience personnelle) et dans une moindre mesure (Netbeans) ont été jugés insuffisants.
Vineet Reynolds
1
Bon conseil. Pas assez dit. Parfois, nous réfléchissons trop au problème et c'est juste le système désynchronisé. Comme c'est le cas avec le redémarrage d'un ordinateur pour résoudre des problèmes simples.
Xonatron
Merci, c'était le problème dans mon cas. Cela semble stupide, mais un simple clean et F5 après une construction ont fait le travail.
jfajunior
20

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

Jigna.Shah
la source
1
Arggh, il existe également un raccourci pour cela, je n'ai probablement pas vérifié accidentellement un élément de menu, mais je suis plutôt susceptible d'avoir appuyé sur Ctrl + Alt + B. Merci quand même.
Patru le
3

Projet -> Clean semblait fonctionner pour moi sur JRE 8

JH95
la source
2

Pour que le débogueur fonctionne avec remote, les fichiers java .class doivent être respectés avec les informations de débogage. Si l' option " -g: none " a été passée au compilateur, alors le fichier de classe n'aura pas les informations nécessaires et le débogueur ne pourra donc pas faire correspondre les points d'arrêt sur le code source avec cette classe à distance. Pendant ce temps, si les fichiers jars / class étaient obscurcis , ils n'auront pas non plus d'informations de débogage. Selon vos réponses, ce n'est probablement pas votre cas, mais cette information pourrait être utile pour d'autres personnes confrontées au même problème.

sergeyan
la source
2

Dans mon cas, le problème était que je n'avais pas ouvert la vue de débogage dans la perspective de débogage, donc:

1 - Assurez-vous que la perspective de débogage est ouverte:

le débogueur eclipse ne fonctionne pas 1

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

le débogueur eclipse ne fonctionne pas 2

Dani
la source
2

Supprimez tous les points d'arrêt et ajoutez-les de nouveau.

Raffi Khatchadourian
la source
Cela a réglé le problème pour moi. Bizarre. Thx
Atom999
1

Pour JDK7, run-> Debug Configurations, cochez "Keep JUnit running after a test run when debugging".

Frank Fu
la source
1

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

Mathiouss
la source
1

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

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
...
Don Harrington
la source
Après avoir beaucoup lutté, cela résout mon problème. Merci +1
Federico Piazza
0

Pour supprimer les points d'arrêt :

  1. Déboguez votre classe en tant que test junit
  2. Lorsque votre débogueur s'arrête, cliquez sur l'onglet "points d'arrêt" à côté de "variables" et "expressions"
  3. En haut à droite de l'onglet de point d'arrêt, cliquez sur le bouton avec deux «X»
  4. Arrêtez le test, remplacez votre point d'arrêt et réexécutez le débogueur
Cyrois
la source
0

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

Henno Vermeulen
la source
0

Si rien ne fonctionne-

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

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 du débogueur par défaut est 6666. Lorsqu'un flux est exécuté, il ne s'arrête pas au point d'arrêt. quand j'ai changé le port pour un autre (par exemple 8099), cela a bien fonctionné.

RuntimeException
la source
0

Accédez à Right click->Debug Configurationet 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 le débogage fraîchement commencé.

priyanka_rao
la source
0

Si vous êtes sur Eclipse,

Cliquez avec le bouton droit sur votre dossier de projet sous "Package Explorer".

Allez à la source -> Nettoyez et choisissez votre projet.

Cela nettoiera tout désordre et votre point de rupture devrait fonctionner maintenant.

Sureshbabu E
la source
0

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

Ahmed Tawila
la source
0

Dans mon cas, j'avais plusieurs projets dans le même espace de travail. Le fichier java que j'essayais de déboguer était présent dans plus d'un projet avec le même package.

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

Shanu Gupta
la source
0

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

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

Je configure 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.

Amir Pauker
la source
-2

C'est ce qui fonctionne pour moi:

J'ai dû mettre l'adresse de mon serveur local dans la configuration du serveur PHP comme ceci:

entrez la description de l'image ici

Remarque : cette adresse, est celle que je configure dans mon fichier Apache .conf .

Remarque : le seul point d'arrêt qui fonctionnait était le «Pause à la première ligne», après cela, les points d'arrêt ne fonctionnaient pas.

Remarque : vérifiez vos propriétés xdebug dans votre fichier php.ini et supprimez celles que vous jugez inutiles .

Francisco Corrales Morales
la source
1
Je ne vois pas comment cela répond à la question (sur le débogage JUnit et Java)
Newtopian