Utilisation de la vue Débogage

Dans la vue Débogage, vous pouvez gérer le débogage d'un programme. Elle affiche la pile des unités d'exécution interrompues pour chaque cible que vous déboguez. La vue Débogage affiche les cibles de débogage (associées à des unités d'exécution ou à des cadres de pile) correspondant à chaque programme ou application que vous déboguez.

Pourquoi et quand exécuter cette tâche

Une cible de débogage ordinaire dans la vue de Débogage se présente comme d'après le diagramme suivant :

Vue Débogage

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 sur le diagramme). Au-dessous du lancement, un noeud représentant le moteur de débogage est affiché (pointeur B sur le diagramme). Chaque unité d'exécution de votre programme est alors affichée (pointeur C sur 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 ses cadres de pile (pointeur D sur le diagramme). Si vous développez manuellement d'autres unités d'exécution, ces dernières se développeront automatiquement à la prochaine interruption du programme. Enfin, un noeud représentant le processus et le programme en cours de débogage est affiché (pointeur E sur le diagramme).

Remarque :
  • Pour les applications à une seule unité d'exécution (générées sans libpthreads.a), l'ID unité d'exécution affiché dans la vue Débogage correspond toujours à une unité d'exécution de noyau. Il s'agit généralement d'un nombre important.
  • Pour les applications comportant plusieurs unités d'exécution (générées avec libpthreads.a), l'ID unité d'exécution affiché dans la vue Débogage correspond à pthread. Il s'agit généralement de nombres réduits. Une unité d'exécution dont l'ID est un très grand nombre correspond à une unité d'exécution de noyau qui n'est actuellement pas associée à une unité de type pthread. Ce cas se produit généralement si l'application a reçu un signal asynchrone, par exemple SIGSTOP. Ces unités d'exécution disparaissent une fois le signal 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 ne déboguera que l'unité d'exécution de noyau unique existant dans le processus enfant. L'ID de cette unité d'exécution sera celle d'une unité d'exécution de noyau.

Lorsque l'exécution du programme est interrompue, la source du cadre de pile sélectionné s'ouvre dans l'éditeur, en sélectionnant la ligne de source que le programme est sur le point d'exécuter. Si le programme comporte de nombreuses unités d'exécution, la pile correspondant à l'unité d'exécution qui a entraîné l'arrêt risque de disparaître du cadre de débogage.

La vue Débogage peut également être utilisée pour définir le démon du débogueur. Pour plus d'informations à ce sujet, consultez la rubrique connexe sur l'écoute des moteurs de débogage.

Exécution, arrêt et déconnexion

Pourquoi et quand exécuter cette tâche

Vous pouvez exécuter ces actions de débogage de base dans la vue Débogage :

  • Pour exécuter votre application, cliquez sur le bouton Reprendre (icône Reprendre) ou utilisez la touche F8.
  • Pour arrêter la session de débogage, cliquez sur Arrêter (icône Arrêter) ou tapez Maj+F8. Vous pouvez également cliquer avec le bouton droit de la souris sur la cible de débogage à arrêter (ou sur une de ses unités d'exécution ou une de ses piles) et choisir une action d'arrêt.
  • Pour vous déconnecter du programme et le laisser en cours d'exécution, cliquez sur Déconnecter (icône Déconnecter). Cette action peut être réalisable ou non, en fonction de la manière dont le programme en cours de débogage a été démarré.

Arrêt de l'exécution

Pourquoi et quand exécuter cette tâche

Si l'application que vous déboguez est en cours d'exécution, vous pouvez l'arrêter, elle ou l'une de ses unités d'exécution, via l'option Interrompre (icône Interrompre) (Ctrl+F8). Si le processus est sélectionné lorsque cette action est utilisée, toutes les unités d'exécution du processus sont arrêtées. Si votre moteur de débogage permet d'agir individuellement sur les unités d'exécution, et si une unité d'exécution est sélectionnée, elle est la seule à être arrêtée. Cette capacité n'est disponible qu'à compter de la version 11.1 du moteur de débogage. La ou les unités d'exécution de l'application sont interrompues jusqu'à ce que vous utilisiez l'option Reprendre. En cas d'interruption, le moteur de débogage envoie une instruction SIGSTOP au programme en cours de débogage.

L'arrêt est utile si vous avez un processus débridé qui fonctionne, mais qui n'atteint aucun point d'arrêt. Vous pouvez reprendre le contrôle d'une application en l'arrêtant. Lorsque vous arrêtez un programme, l'arrêt se produit en général dans la vue de désassemblage de l'éditeur.

Avance pas à pas dans un programme

Pourquoi et quand exécuter cette tâche

Si une unité d'exécution est interrompue, vous pouvez utiliser les commandes d'avance pas à pas pour exécuter le programme ligne par ligne. Dans les opérations d'avance pas à pas, si le programme détecte un point d'arrêt ou un événement, l'exécution s'interrompt à leur niveau et l'opération pas à pas prend fin. Vous pouvez utiliser les commandes d'avance pas à pas pour progresser dans le programme instruction par instruction ou emplacement par emplacement.

Les commandes de progression suivantes sont disponibles :

  • Avance d'un pas sans entrée (icône Avance d'un pas sans entrée) (F6) : Lorsque vous utilisez cette commande, le programme passe à la ligne source suivante.
  • Avance d'un pas avec entrée (icône Avance d'un pas avec entrée) (F5) : Lorsque vous utilisez cette commande, le passage passe à l'instruction suivante. Si la ligne en cours contient un appel à une autre fonction, le débogueur s'arrête à la fonction en question.

    Le comportement de cette commande est affecté par l'action Utiliser le débogage par étape/progression (icône Utiliser le débogage par étape/progression) (Maj+F5). Si le filtre est désactivé (bouton de commande non sélectionné), le débogueur s'arrête, même s'il ne contient pas d'informations de débogage et que le désassemblage doit être affiché. Si le filtre est activé (bouton de commande sélectionné), le débogueur s'arrête dans la fonction appelée uniquement lorsque la source peut être affichée. Si la source ne peut pas être affichée, il se comporte comme si vous aviez émis une commande d'avance d'un pas sans entrée. La variable d'environnement DER_DBG_ STEP_DEBUG du moteur de débogage affecte le comportement de l'action Utiliser les filtres de progression. Pour plus d'informations sur les variables d'environnement du moteur de débogage, consultez la rubrique connexe.

    Remarque : Pour les langages PL/I et COBOL, l'action Avance d'un pas avec entrée se comporte généralement comme si l'action Utiliser les filtres de progression était toujours active. Lors du débogage de programmes écrits dans l'un de ces langages, le débogueur tente de s'arrêter dans le code source.
  • Avance avec retour (icône Avance avec retour) (F7) : Lorsque vous utilisez cette commande, le programme s'exécute jusqu'au point situé dans le programme appelant immédiatement après l'appel à la fonction en cours. En règle générale, l'arrêt s'effectue immédiatement après l'instruction effectuant l'appel. Si le programme appelant comporte des informations de débogage, elles peuvent être au milieu d'une ligne source.
  • Avance d'un pas avec entrée animée : Lorsque vous utilisez cette action, le débogueur émet des commandes Avance d'un pas avec entrée à répétition. Vous pouvez contrôler le délai entre chaque étape en sélectionnant à nouveau l'action Avance d'un pas avec entrée animée.

Commentaires en retour