Utilisation de la vue Débogage
La vue Débogage permet de gérer le débogage d'un programme. Il affiche la pile des unités d'exécution suspendues pour chaque cible que vous déboguez. Les cibles de débogage (associées à des unités d'exécution et à des cadres de pile) s'affichent dans la vue Débogage pour chaque programme ou application que vous déboguez.
A propos de cette tâche
Dans la vue Débogage, chaque unité d'exécution de votre programme est affichée en tant que noeud dans l'arborescence. Une cible de débogage standard dans la vue Débogage est décrite en fonction du diagramme suivant:

Dans la vue Débogage, les lancements utilisés pour démarrer la session de débogage du programme sont affichés au niveau du noeud supérieur (pointeur A. dans le diagramme). Sous le lancement, un noeud représentant le moteur de débogage est affiché (pointeur B. dans le diagramme). Chaque unité d'exécution de votre programme est alors affichée (pointeur C. dans le diagramme). Lorsque l'exécution du programme s'arrête, par défaut, le noeud de l'unité d'exécution d'arrêt se développe automatiquement pour afficher son ou ses cadres de pile (pointeur D. dans le diagramme). Si vous développez manuellement d'autres unités d'exécution, ces unités d'exécution seront automatiquement augmentées lors de la prochaine interruption du programme. Enfin, un noeud représentant le processus et le programme en cours de débogage est affiché (pointeur E. dans le diagramme).
- Pour les applications à unité d'exécution unique (générées sans
libpthreads.a), l'ID d'unité d'exécution affiché dans la vue Débogage est toujours un ID d'unité d'exécution du noyau. Il s'agit normalement d'un grand nombre. - Pour les applications à unités d'exécution multiples (générées avec
libpthreads.a), l'ID d'unité d'exécution affiché dans la vue Débogage est l'IDpthread. Il s'agit normalement de petits nombres. Une unité d'exécution avec un ID d'unité d'exécution très volumineux indique une unité d'exécution de noyau qui n'est pas actuellement associée à unpthread. Cela se produit généralement si l'application a reçu un signal asynchrone, tel queSIGSTOP. Ces unités d'exécution disparaîtront lorsque le signal aura été traité. - Si vous choisissez de suivre le processus enfant après un appel à
fork()dans un processus à unités d'exécution multiples, le débogueur déboguera uniquement l'unité d'exécution de noyau unique qui existe dans le processus enfant. L'ID de cette unité d'exécution sera celui d'une unité d'exécution du noyau. - Le cadre de paragraphe n'est pas pris en charge si le module de chargement est conforme à OPT.
Lorsque l'exécution du programme est interrompue, la source du cadre de pile sélectionné s'ouvre dans l'éditeur, mettant en évidence la ligne source que le programme est sur le point d'exécuter. S'il existe de nombreuses unités d'exécution dans le programme, la pile de l'unité d'exécution à l'origine de l'arrêt peut être déchargée de la fin du cadre de débogage.

Exécution, arrêt et déconnexion d'un programme
A propos de cette tâche
Vous pouvez effectuer les actions de débogage de base suivantes dans la vue Débogage:
- Pour exécuter votre application, cliquez sur Reprendre l'
, ou appuyez sur la touche F8. - Pour terminer la session de débogage, cliquez sur Terminate (
) ou appuyez sur la touche Echap ( Shift+F8 ) - ou cliquez avec le bouton droit de la souris sur la cible de débogage (ou l'un de ses threads ou piles) que vous souhaitez terminer, et choisissez l'une des actions de terminaison. - Pour vous déconnecter du programme et le laisser tourner, cliquez sur Déconnecter (
). Cette action peut ne pas être disponible, selon la façon dont le programme que vous déboguez a été lancé.
Avance pas à pas dans un programme
A propos de cette tâche
Lorsqu'une unité d'exécution est suspendue, les options d'avance pas à pas permettent d'exécuter le programme ligne par ligne. Lors de l'exécution d'une opération d'étape, si un point d'arrêt ou un événement est détecté, l'exécution s'interrompt au niveau du point d'arrêt ou de l'événement et l'opération d'étape se termine. Vous pouvez utiliser des commandes d'étape pour parcourir votre programme à partir d'une seule instruction ou d'un seul emplacement à la fois.
Les commandes d'étape suivantes sont disponibles:
- Step Over (
)( F6 ) : Lorsque vous émettez un step over, le programme passe à la ligne source suivante. - Step Into (
)( F5 ) : Lorsque vous émettez un step into, votre programme passe à l'instruction suivante. Si la ligne en cours contient un appel à une autre fonction, le débogueur s'arrête dans cette fonction.Le comportement de cette commande est affecté par l'action Utiliser les filtres d'étape (
)( Shift+F5 ). Si le filtre est désactivé (bouton de fonction non sélectionné), le débogueur s'arrête dans une fonction appelée même s'il ne contient pas d'informations de débogage et le désassemblage doit être affiché. Si le filtre est activé (bouton de fonction sélectionné), le débogueur ne s'arrête dans la fonction appelée que si la source peut être affichée. Si la source ne peut pas être affichée, elle se comporte comme si vous aviez émis une commande Avancer d'un pas sans entrée. La variable d'environnement du moteur de débogage DER_DBG_ STEP_DEBUG affecte le comportement de l'action Utiliser les filtres de progression .Remarque : pour PL/I et COBOL, l'action « passer à l'action » se comportera généralement comme si le filtre d'action était toujours activé. Lors du débogage de programmes écrits dans ces langages, le débogueur tente de s'arrêter dans le code source. - Retour étape par étape (
)( F7 ): Lorsque vous émettez un retour d'étape, votre programme s'exécute jusqu'au point du programme appelant immédiatement après l'appel à la fonction actuelle. Vous vous arrêterez normalement à l'emplacement qui suit l'instruction d'appel. Si le programme appelant possède des informations de débogage, elles peuvent se trouver au milieu d'une ligne source. - Animated Step Into (
) : Lorsque vous exécutez cette action, le débogueur exécute une action step into de manière répétée. Vous pouvez contrôler le délai entre chaque étape en sélectionnant à nouveau l'action Avancer d'un pas avec entrée .