Débogage avec des informations sur le travail obtenues de manière dynamique

Lorsqu'il débogue une application IBM i, le débogueur a besoin de connaître le travail où l'application est ou sera en train de s'exécuter avant le début de la session de débogage. Si, par exemple, votre application principale démarre différents travaux pour différentes tâches, vous ne connaissez pas toujours les numéros de ces travaux. Pour déboguer un programme s'exécutant sous un profil utilisateur spécifique connu, vous pouvez utiliser la prise en charge des points d'entrée de service pour déboguer ce type de travail. Pour plus de détails, reportez-vous à la prise en charge des points d'entrée de service.Débogage des applications IBM i à l'aide de points d'entrée de service

Si tous les travaux d'application s'exécutent sous le même profil générique d'utilisateur, la définition d'un point d'entrée de service démarrera le débogueur pour le prochain travail qui entrera le système et non pour un travail spécifique.

Si vous pouvez configurer votre application pour satisfaire les deux conditions suivantes, lors du démarrage de la session de débogage, vous pouvez utiliser la prise en charge de Dynamic Attach fournie avec le débogueur intégré d'IBM i pour déboguer votre application sans connaître le numéro du travail :
  1. Votre application ou le programme de contrôle de celle-ci connaissent le travail que vous voulez déboguer et ils peuvent mettre l'application en suspens.
  2. L'exécution de l'application ainsi mise en suspens peut être relancée par l'utilisateur ou par l'exécution d'une commande spécifiée.

La fonctionnalité Dynamic Attach opère ainsi :

Créez une nouvelle configuration IBM® i : débogage d'un travail dynamique dans la boîte de dialogue de configuration de débogage. Pour plus de détails, voir l'aide de la configuration de Dynamic Attach. Vous entrez ici une clé identifiant de manière unique l'application à déboguer (par exemple, l'identification d'une transaction spécifique). Vous indiquez également s'il y a lieu la commande permettant de reprendre l'application.

Une fois que vous avez appuyé sur Déboguer dans la boîte de dialogue de configuration, le débogueur attendra cette clé dans Data Queue Q5BTEMP/DYNAMICATT. Lorsque l'application atteindra le point que vous voulez déboguer, son programme auxiliaire ou elle mettront si nécessaire l'application en suspens et ils écriront dans la file Q5BTEMP/DYNAMICATT de données du débogueur la clé et le numéro du travail à déboguer. Une fois que cette clé est disponible, le débogueur la lit et il obtient le numéro du travail qui lui est associé afin de démarrer une session de débogage pour ce travail.

Lorsque le débogueur est prêt, la commande qui a été indiquée pour la reprise de l'application sera émise pour permettre à votre application de continuer à s'exécuter. Si aucune commande de reprise n'a été indiquée, le débogueur s'attachera au travail spécifié via l'interface de la file d'attente.

Voici un exemple de scénario :

Votre application soumet des travaux par lots pour exécuter des programmes. Ces travaux s'exécutent tous sous le même profil utilisateur. Les programmes soumis acceptent un ID unique comme paramètre. Vous voulez déboguer le travail pour un ID spécifique. Votre application comporte un mécanisme de communication interprocessus lui permettant d'obtenir cet ID. Pour déboguer le travail, vous créez une configuration IBM i: Débogage de travail dynamique, vous spécifiez l'ID comme étant la clé et vous entrez la commande qui permettra de relancer le programme mis en suspens. Puis vous exécutez l'application à l'aide de l'ID spécifié. Votre application principale vérifie l'ID avant de soumettre le travail. Si l'ID est celui que vous voulez déboguer, l'application met ce travail en suspens et écrit son numéro dans la file d'attente des données de débogage. Votre application dispose également d'un fichier de données pour se rappeler l'ID et le numéro de travail qui correspond à cet ID de tous les travaux écrits dans la file d'attente des données de débogage. Pour libérer le programme mis en suspens, prenez l'ID, recherchez le travail dans le fichier de données et libérez-le.


Commentaires en retour