Présentation Abend Aid - Xpediter

Download Report

Transcript Présentation Abend Aid - Xpediter

Abend Aid
Xpediter
Analyse et mise au point interactive de
programmes sous z/OS
© LCL 2009
Présentation Abend Aid - Xpediter
Pourquoi Abend Aid et Xpediter ?
 Abend Aid et Xpediter sont des outils d’aide à la mise au
point complémentaires
 Abend Aid doit être utilisé en premier lieu pour diagnostiquer un
incident et son contexte d’apparition
 Xpediter peut être utilisé pour reproduire un incident ou pour tester
et mettre au point un programme
 Si l’analyse d’un rapport Abend Aid ne suffit pas à diagnostiquer un
incident
 Si il n’y a pas d’incident, mais que le comportement d’un programme
n’est pas celui qui était attendu
2
Présentation Abend Aid - Xpediter
Abend Aid : Généralités
 Abend Aid est un utilitaire de diagnostic d’incidents qui
permet de :
GÉNÉRER
CONSULTER
des rapports créés lors des incidents Batch et Temps
réel dans des environnements techniques du monde
IBM z/OS
 Produit Compuware Corporation :
3
Présentation Abend Aid - Xpediter
Abend Aid : Généralités
 Abend Aid
 intercepte et effectue une première analyse des défaillances des
programmes
 produit un diagnostic complet du problème sous la forme d’un
rapport concis contenant :
 les informations techniques permettant de « localiser » l’incident
 le code concerné dans le programme source
 les données nécessaires pour analyser et résoudre le problème
 Abend Aid traite les abandons Batch (MVS Abendaid),
CICS (CICS Abendaid/FX) et DB2
4
Présentation Abend Aid - Xpediter
Xpediter : Généralités
 Xpediter est un débuggeur interactif qui permet de :
TESTER
METTRE AU POINT
des programmes Cobol et Assembleur dans des
environnements techniques du monde IBM z/OS
 Produit Compuware Corporation :
5
Présentation Abend Aid - Xpediter
Xpediter : Principales fonctions
 Identification des raisons d'une anomalie de traitement
 Xpediter déroule le programme depuis son début jusqu'à
l'instruction en abend, ce qui permet de suivre le cheminement
qui amène à l'abandon.
 En cas d'abandon système d'un programme, il est toutefois
conseillé d'utiliser l'outil Abend Aid pour un premier diagnostic,
puis si nécessaire de reproduire le cas sous Xpediter.
6
Présentation Abend Aid - Xpediter
Xpediter : Principales fonctions
 Aide à la mise au point de programmes
 Xpediter permet de suivre le déroulement de l'exécution d'un
programme selon la logique de programmation adoptée dans
celui-ci (et non selon ce que l'utilisateur pense avoir codé…)
7
Présentation Abend Aid - Xpediter
Xpediter : Principales fonctions
 Tests de cas particuliers
 Avec Xpediter, il est possible de vérifier le bon fonctionnement
d'un programme dans des cas difficiles ou impossibles à
produire avec un jeu d'essai
 Pour ce faire, Xpediter permet notamment, en cours
d'exécution d'un programme, de :
modifier le contenu des données traitées
modifier le déroulement du programme
8
Présentation Abend Aid - Xpediter
Xpediter sous CICS
 Test en environnement CICS natif
 Sous le CICS, lancer ‘ XPED ’ et positionner un break point
dans le programme source à tester
 Lancer la transaction CICS à tester via son code
 L ’exécution s ’arrête au premier break point positionné
9
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Aide sur une commande Xpediter
 Visualisation de l ’aide détaillée associée à une commande
Xpediter
 HELP commande
10
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging d ’Abend
Rechercher l’origine d’un
Détection des abends dans un programme:
ABEND dans un programme GO (démarrer le test)
Quand l'erreur survient:
LOG (accès au compte-rendu d’exécution) -ouHELP abend-code (accès à l’aide concernant le code erreur)
11
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Arrêter le déroulement d’un
Programme
Exécution du programme
Poser un point d’arrêt lors de l’exécution dans un source COBOL :
A (pour After : commande de ligne permettant d’arrêter le déroulement du
programme après exécution de la ligne courante)
B (pour Before : commande de ligne permettant d’arrêter le déroulement du
programme avant exécution de la ligne courante)
Retirer un point d’arrêt posé dans un source COBOL :
D (pour Delete : commande de ligne permettant de supprimer la commande de
point d’arrêt posée par A ou B sur la ligne courante)
Visualiser l'exécution d'un programme :
GO 1 ou <PF9> (exécuter 1 ligne de programme) : exécution en mode « pas à
pas » (ligne par ligne) à chaque utilisation de GO 1 ou <PF9>
- ou GO n (avec n = nombre de lignes à exécuter avant de marquer une pause dans
l’exécution des lignes de programme)
- ou GO ou PF12 (exécuter le programme jusqu’à sa fin ou jusqu’au prochain
point d’arrêt posé dans le source du programme)
12
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Visualisation / Modification
des données de la
Working Storage
Conserver la Visualisation /
Modification de données
en tête d’écran Xpediter
Arrêt lors de la modification
d'une variable
Arrêt lors de la valorisation
d'une variable
Modifier et / ou Visualiser le contenu de la Working-Storage :
PEEK donnée -ouP, Pn (commande de ligne, n =position de la variable sur la ligne) -ouWS (pour voir la Working-Storage entière)
Essayer E, En (visualiser les éléments)
Essayer H, Hn (visualiser en hexadécimal)
Puis utiliser <PF6> (LOCATE *) pour retrouver le point d’exécution courant
Conserver la visualisation / modification du contenu des données durant
l'exécution du programme en tête d’écran Xpediter :
KEEP donnée -ouK, Kn (commande de ligne, n =position de la variable sur la ligne)-ouK * (toutes les variables de la ligne)
Exécute le programme jusqu'à ce que le contenu d’une donnée change :
WHEN variable CHANGES
Exécute le programme jusqu'à ce que le contenu d’une donnée soit valorisé à
une valeur prédéterminée :
WHEN variable = 'valeur’
N.B. : Opérateurs de comparaison autorisés :
=, <, >, NOT =, NOT >, NOT <
13
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Supprimer toutes les
Commandes Xpediter
Ligne Courante
Changer la Logique de
programmation en modifiant
les lignes de code à exécuter
Exécution automatique et
Visualisation
Supprimer toutes les commandes passées sous Xpediter :
DELETE ALL
Se repositionner dans le source sur la ligne en cours d’exécution :
LOCATE *
- ou <PF6>
Aller directement sur une ligne donnée, sans exécuter le code entre le point
courant dans le programme et cette ligne :
GOTO ligne -ou- GT (commande de ligne)
‘Sauter’ l’exécution d’une ligne donnée (ne pas exécuter le code de cette
ligne lors de l’exécution du programme) :
SKIP ligne -ou- S (commande de ligne)
Visualiser l'exécution d'un programme en automatique :
B - ou - A : Positionner au préalable un Break Point (avec After ou Before)
sur la ligne ou l’on souhaite la fin de l’exécution automatique du programme
SET DELAY 1 : pour demander un délai d'une seconde entre chaque ligne de
programme exécutée automatiquement
GO TR : lance l’exécution automatique en alimentant la trace en LOG
(jusqu’au point d’arrêt posé précédemment)
14
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Tracer le Flot logique
Détection de Boucles
Couverture de Test
Montrer les lignes où l'exécution a été arrêtée:
SHOW PREV
Ressortir de cet affichage par la touche de fonction <PF3>.
Trouver une boucle dans le programme:
COUNT PARA
GO n (n = nombre de lignes)
SHOW COUNTS
Ressortir de cet affichage par la touche de fonction <PF3>.
Pour rassembler les statistiques de l'exécution :
COUNT ALL PARA (pour générer des compteurs d’exécution de chaque
‘étiquette’ de paragraphe)
GO
SHOW COUNTS
Ressortir de cet affichage par la touche de fonction <PF3>.
15
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Compter un nombre
d’exécutions
Redémarrer le Test en Batch
Sortie du Test
Exécution en mode arrière
Afficher un compteur du nombre d’exécutions d’une ligne de programme :
COUNT numéro-de-ligne-COBOL -ouC (commande à saisir sur la ligne de programme)
Puis SHOW COUNTS pour visualiser tous les compteurs de lignes
Ressortir de cet affichage par la touche de fonction <PF3>.
Redémarrer le Test en début de programme (valable en Batch uniquement) :
RETEST
Provoquer l’arrêt de l’exécution d’un programme sous Xpediter :
EXIT ou PF4
Vérifier la logique du programme et le contenu des données:
MONITOR (cette instruction marque le point de départ pour le futur mode
d’exécution arrière)
GO
REVERSE (pour inverser l'exécution)
Essayer WHEN donnée pour identifier la ligne où la donnée est modifiée
GO ou GO 1
RESUME (pour reprendre l'exécution à partir du point d'inversion)
DELETE MONITOR (pour stopper le monitoring)
16
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Atteindre une ligne de code
spécifique exécutée un
nombre de fois prédéterminé
Atteindre un enregistrement
Insertion de Code
Exécuter le programme jusqu'à ce qu'un certain nombre d’exécution d’une
ligne de COBOL spécifique soit atteint :
COUNT numéro-de-ligne-COBOL MAX n
(n = pour stopper au nombre d’exécution prédéterminé)
- ou WHEN donnée = valeur (arrête l'exécution quand la condition est vraie)
Exécuter jusqu'à ce qu'un certain enregistrement record soit lu:
COUNT numéro-de-ligne-COBOL-du-read MAX n
(n = pour stopper au numéro d'enregistrement moins 1)
Exemple: Pour prendre le contrôle au 10ème enregistrement, positionner le
MAX à 9. Vous stopperez après que le 9ème enregistrement soit lu et avant que
le 10ème soit lu
ou
WHEN donnée = valeur (arrête l'exécution quand la condition est vraie)
Ajouter des commandes XPEDITER/TSO temporaires durant le test:
I n (INSERT en commande de ligne, n est le nombre de lignes à insérer)
Essayer HELP INSERT pour voir la liste des commandes valides
Exemple : MOVE donnée_A TO donnée_B.
17
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Exécuter un Script
Recherche
Exécution automatique d'une liste de commandes XPEDITER/TSO :
INCLUDE nom_de_membre
(Le script doit être un membre d'un PDS identifié au setup XPEDITER)
Recherche des données ou structures COBOL:
FIND donnée (Rechercher la donnée dans le programme)
FIND donnée ALL X (Rechercher la donnée dans le programme et n’afficher
que les lignes contenant la donnée et le nombre de lignes séparant chaque ligne
résultat)
FIND donnée ALL X NOL (Rechercher la donnée dans le programme et
n’afficher que les lignes contenant la donnée)
Essayer HELP FIND pour voir la liste des commandes valides
18
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Conserver l’affichage des
données en table
Visualiser / Débuguer les
sous-programmes
Afficher les touches de
fonction
Conserver l’affichage des données à l'intérieur d'une table:
KEEP table
Remplacer l'occurrence par un nombre -ouTaper +1 à coté de l'occurrence et presser plusieurs fois sur ENTER
Voir les entrées indicées d'une table:
KEEP table (indice/nom-index)
Visualiser le code source des sous-programmes appelés:
SOURCE nom_du_sous-programme -ouRemplacer le nom du programme par le nom du sous-programme dans la zone
de message
Débuguer un des sous-programmes appelés:
INTERCEPT nom_du_sous-programme (positionne automatiquement un
point d'arrêt en début et en fin de sous-programme), puis, pour débuguer le
sous-programme, positionner un point d’arrêt juste avant l’appel du sousprogramme dans le programme appelant, puis exécuter en ‘pas à pas’ (GO 1 ou
<PF9>) pour entrer dans le source du sous-programme et l’exécuter sous
Xpediter.
Afficher les touches de fonctions et les commandes associées en bas d’écran :
PFSHOW ON (activer l’affichage des touches de fonction)
PFSHOW OFF (désactiver l’affichage des touches de fonction)
19
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Accéder au début / à la fin
du source du programme
Visualiser tous les points
d’arrêt positionnés sur un
programme
Visualiser toutes les
conditions de type WHEN
positionnées dans un
programme
Accéder au début du listing COBOL du programme analysé via Xpediter :
TOP
Accéder à la fin du listing COBOL du programme analysé via Xpediter :
BOTTOM
Visualiser tous les points d’arrêts positionnés sur un programme (via les
commandes A(fter) ou B(efore)) :
SHOW BREAKS
Il est possible de supprimer le ou les points d’arrêts désirés en utilisant la
commande de ligne D
Ressortir de cet affichage par la touche de fonction <PF3>.
Visualiser toutes les conditions de type WHEN positionnées dans un
programme :
SHOW WHEN
Il est possible de supprimer la ou les conditions désirées en utilisant la
commande de ligne D
Ressortir de cet affichage par la touche de fonction <PF3>.
20
Présentation Abend Aid - Xpediter
Xpediter : Principales Commandes
 Debugging de logique
Supprimer tous les points d’arrêts positionnés sur un programme (via les
commandes A(fter) ou B(efore)) :
DELETE A (supprime tous les points d’arrêt de type ‘After’)
DELETE B (supprime tous les points d’arrêt de type ‘Before’)
Accéder à l’écran de MAJ des Accéder à l’écran de mise à jour des commandes affectées aux touches de
touches de fonction Xpediter fonction Xpediter :
KEYS
N.B. : utiliser la touche « Entrée » pour basculer de l’affichage de l’écran des
touches <PF1> / <PF12> à <PF13> / <PF24> et inversement
Ressortir de ces écrans par la touche de fonction <PF3>.
Gestion des majuscules et
Utiliser la commande SET CAPS OFF pour désactiver la conversion par
des minuscules en saisie et en défaut des données et commandes saisies au clavier en majuscules (et
affichage
conserver ainsi les données et commandes en minuscules).
Supprimer tous les points
d’arrêt positionnés sur un
programme
Utiliser de plus la commande SET LOWCASE ASIS pour désactiver
l’affichage par défaut des caractères en majuscules dans les zones visualisées
sous XPEDITER, et permettre ainsi l’affichage des minuscules.
Utiliser la commande SET CAPS ON pour réactiver l’affichage par défaut des
caractères en majuscules (et ne plus permettre l’affichage des minuscules).
21
Présentation Abend Aid - Xpediter
Xpediter : Touches de Fonction
 PF1 à PF12
PF1
HELP
Aide
PF2
PEEK CSR
PF3
END
Affiche la zone de working contenant la zone présente sur la ligne pointée par le
curseur
Arrête la fonction en cours et retourne à l’écran précédent
PF4
EXIT
Sort du programme
PF5
FIND
Recherche d’une donnée
PF6
LOCATE * Retour à la ligne de code en cours d’exécution
PF7
UP
Affichage de la page précédente
PF8
DOWN
Affichage de la page suivante
PF9
GO 1
Exécution de l’instruction suivante du programme
PF10
LEFT
Décalage de l’affichage vers la gauche (de la partie pointée par le curseur)
PF11
RIGHT
PF12
GO
Affiche la partie droite d’une donnée longue (notamment d’un occurs)
Avant d’utiliser la touche fonction, positionner le curseur dans la zone d’affichage
des données
F10 permet de se décaler vers la gauche
Exécution du programme jusqu’au prochain point d’arrêt ou instruction en erreur.
22
Présentation Abend Aid - Xpediter
Xpediter : Touches de Fonction
 PF13 à PF24
PF13
HELP
Aide.
PF14
FIND CSR
PF15
END
Le curseur positionné sur une donnée, affiche la ligne suivante contenant la donnée
pointée.
Arrête la fonction en cours et retourne à l’écran précédent.
PF16
EXIT
Sort du programme.
PF17
FIND IND
PF18
LOCATE * Retour à la ligne de code en cours d’exécution.
PF19
UP
Affichage de la page précédente.
PF20
DOWN
Affichage de la page suivante.
PF21
GO 1
PF22
DLEFT
PF23
DRIGHT
PF24
GO
Il est conseillé d’associer la commande « SWAP LIST » à cette touche afin
d’accéder à TSO en parallèle au test XPEDITER.
Décalage de l’affichage vers la gauche pour la partie haute de l’écran (zones en
Keep)
Décalage de l’affichage vers la droite pour la partie haute de l’écran (zones en
Keep)
Il est conseillé d’associer la commande « RETRIEVE » à cette touche afin de
pouvoir rappeler les dernières commandes passées.
23