Dans une méthode que je débogue, j'engendre un nouveau thread. J'ai besoin de déboguer l'exécution de ce nouveau thread plutôt que le thread parent. Comment puis-je faire cela dans Eclipse?
Mettez un point d'arrêt sur la méthode "run" du nouveau thread. Cela arrêterait l'exécution une fois le thread démarré.
En plus de la réponse de Shamit Verma:
Lors du débogage d'applications multi-thread Java , il est préférable de ne pas utiliser de points d'arrêt standard qui suspendent uniquement le thread où le point d'arrêt est défini. La définition d'un point d'arrêt standard dans votre application ne cassera que le thread associé. Les autres threads seront toujours en cours d'exécution. Dans le débogueur Eclipse, pour une raison quelconque, le débogueur ignorera les points d'arrêt si d'autres threads ont déjà démarré.
La solution pour déboguer Java:
Définissez un point d'arrêt dans le thread souhaité (méthode @ Run () que j'attends ..), faites un clic droit sur le point d'arrêt -> propriétés du point d'arrêt.
Dans la boîte de dialogue des propriétés du point d'arrêt, cochez "Suspendre la VM" au lieu de "Suspendre le thread".
Si vous aimez cela, l'ensemble de votre VM sera suspendu si un point d'arrêt est atteint.
Dans C/C++ CDT, utilisez définissez le verrouillage du programmateur sur :
Comme le dit @Employed Russian dans answer-to-other-question , la commande GDB:
set scheduler-locking on
entraînera la suspension des autres threads C/C++ tout en autorisant le thread actuel à avancer. Cette commande peut être exécutée dans Eclipse/CDT Debug en suspendant l'exécution du programme et en ouvrant la perspective 'Debugger Console' et en tapant: définissez le verrouillage du programmateur surElle peut ensuite être retournée à la normale avec: désactiver le verrouillage du programmateur
Voir la documentation de GDB pour plus d'informations sur le verrouillage de planificateur et non-stopmode, qui permet aux autres threads de s'exécuter tout en arrêtant un seul thread.
En plus de la réponse d'Erik Kaju. Si vous déboguez CDT (cela peut être applicable pour Java également, je ne suis pas sûr de cela))
L'inconvénient est que cette procédure doit être répétée pour chaque session de débogage. Si quelqu'un peut fournir un raccourci, ce serait bien.