Quelques rappel sur le debug ILE : + vous ne pouvez plus utiliser ISDB + vous devez compiler avec DBGVIEW(*SOURCE) sur la cde de compilation. + vous visualiser le source en lancant le debug par STRDBG - positionnez vos point d'arrêt par F6 - retrouvez la ligne de commande par F12 - lancez votre programme de la manière qui vous convient F10 permet de faire du pas à pas: un call = un arrêt. F22 permet de faire du pas à pas: un call = on fait du pas à pas dans le pgm. F11 de voir le contenu d'une variable F14 permet de gérer la liste des modules à mettre au point F16 Autorise ou non la mise à jour des fichiers de production F21 affiche une ligne de commande F1 affiche l'aide qui est trés détaillée |
Quelques commandes du Debug : Attr : permet de visualiser la définition d'une variable Eval : permet de 1/ - voir le contenu d'une variable [eval nbr] voir en hexa [eval nbr:x lg] 2/ - changer le contenu d'une variable [eval nbr = 1] Break : définition d'un point d'arret simple ou définition d'un point d'arret conditionnel [break 10 when nocli=0] Step : définition de critères de saut (saut de N instructions) find : recherche 1/ d'une chaîne de caractère. 2/ d'un numéro d'instruction. watch : définition d'un point d'arrêt à appliquer quand la variable change |
Quelques fonctions intégéres: %SUBSTR(var D L) permet de faire une extraction de variable lors d'un eval : eval %substr(RAISOC 1 3), affiche les 3 premiers car. eval %substr(RAISOC 1 3) = 'abc', modifie 3 car. pour un watch : watch %substr(nom 20 2) %ADDR(var) retourne l'adresse (pour un pointeur) d'une variable %INDEX() positionne sur une occurence d'une DS à occurences (RPG uniquement) %VAR() permet de travailler avec une variable nommée "eval" "watch" ou "break" %LOCALVARS affiche la liste des variables locales (sauf CL) |
+ vous pouvez debuger un ensemble de programmes ILE et OPM. a/ compilez vos programmes OPM (CL, RPG) avec OPTION(*SRCDBG) b/ lancez le debug avec OPMSRC(*YES) + vous pouvez indiquer directement lors du lancement - 20 noms de programmes - 20 noms de programmes de service ce qui vous évitera de faire F14. + vous pouvez faire du debug avec un pgm s'exécutant en batch. suivez la procédure ci-dessous : |
lancez votre pgm batch par SBMJOB CMD(CALL .....) HOLD(*YES) mettez le travail batch en maintenance STRSRVJOB JOB() lancez le debug STRDBG PGM(...) ne positionnez pas de point d'arrêt, le système le refuse tant que job n'est pas actif. libérez le job RLSJOB ou WRKUSRJOB et option 6 le système vous informe alors de la libération du job par le message suivant |
Démarrage d'un travail en maintenance Système: xxx Travail: QDFTJOBD Utilisateur: AF400CM Numéro: 082489 Le travail en maintenance a été libéré de la file d'attente de travaux. Appuyez sur ENTREE pour démarrer ce travail ou sur F10 pour entrer des commandes de débogage le concernant. ___________________________________________________________________________ vous devez alors faire F10, puis lancer la commande DSPMODSRC mon-pgm le source apparait à l'écran vous donnant la possibilité de poser vos premiers points d'arrêt. sortez et revenez à l'écran "Démarrage d'un travail en maintenance", faites alors ENTREE, pour que le job démarre réellement. le pgm batch sera suspendu à chaque point d'arrêt, le source vous étant affiché.Il reprendra lorsque vous ferez F10(ligne suivante) ou F12 (point d'arrêt suivant). NE FAITES PAS F3 qui annule le pgm ! |
pensez aux options en spécif H RPG-IV : ------------------------------------------ OPTION(*SRCSTMT) => N° d'instruction = N° de ligne source OPTION(*NODEBUGIO) => un read = une seule instruction, donc un arrêt. ces options sont intégrées dans la version 4.40 (via PTF avant) Pour terminer, depuis la V4R50, si vous positionnez la variable d'environnement ILE_DEBUGGER_1 à ALLOW_WIDE_SCREEN, l'affichage se fera sur un écran 132 colonnes (si votre terminal le permet) : ADDENVVAR ENVVAR(ILE_DEBUGGER_1) VALUE(ALLOW_WIDE_SCREEN) LEVEL(*JOB) REPLACE(*YES) |