PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 20-03-2007 09:59:43

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

[ASTUCE] Outils de debug et tuning sous PB

Bonjour à tous,

Certains outils disponibles dans PB, permettent d'effectuer des métrés (enchaînement d'évènements, temps d'exécutions...) pour une application écrite en Powerbuilder.

Je me propose donc de vous apporter quelques éléments d'information afin d'attirer votre attention sur ces fonctionnalités au cas où vous ne les auriez jamais utilisé.

le menu Tools -> System option vous propose d'activer des options de debug et de profiling:
 
http://img92.imageshack.us/img92/9229/systemoptionsonglet1ia5.png

Debug en cours d'exécution:

- L'option "Just in time debugging" permet simplement de basculer en mode debug pendant une exécution normale (Run):

  -> lancez PB normalement ( Pas en mode debug)
  -> puis en cours d'utilisation faire ALT+TAB vers l'icône PB => une fenêtre bien connue apparaît mais ce coup-ci avec le bouton Debug dégrisé  :

http://img133.imageshack.us/img133/981/debugtl0.png

Génération d'un fichier de trace de débogage

Le plus intéressant est l'option "Enable PBDEbug Tracing" qui permet de tracer la totalité de l'exécution dans un fichier dont l'extension est par défaut .dbg. Ce fichier est consultable dans un éditeur de texte classique (exemple: Textpad).
(En fonction de la profondeur d'héritage de votre application,  n'hésitez pas à augmenter la capacité de la liste des objets tracés)
A noter que cette option est très utile en cas de plantage violent de l'application en cours d'exécution en interprété entraînant la fermeture de PB, ou pour tracer certains traitements spécifiques tels que les accès à la base de registre ou les accès base de manière beaucoup plus précise qu'avec l'outil de débogage PB.


Tuning de l'application:

- L'onglet Profiling:

http://img153.imageshack.us/img153/8655/systemoptionsonglet4rz5.jpg

Génération d'un fichier de trace d'exécution

L'option "Enable Tracing" permet d'effectuer des mesures de temps d'exécution reportées sur un fichier dont l'extension est par défaut .pbp
(Ici aussi, en fonction de la profondeur d'héritage de votre application,  n'hésitez pas à augmenter la capacité de la liste des objets tracés)

Parmi les options paramétrables:

- Timer Kind définit la méthode de mesure temporelle :

Clock : permet une mesure en microseconde de manière absolue par exemple pour chaque entrée dans un évènement.

Process & Thread permet une mesure (moins précise) pour chaque processus & taches utilisés indépendamment. Utile uniquement en architecture distribuée.

- Ce qu'on peut tracer (trace activities):

Routine line hits (volumineux) permet de savoir quand chaque ligne de script PB est exécutées

Embedded SQL correspond évidemment à l'exécution des lignes du style 'select is_contrat into :l_l_contratID from ..."

Garbage collection permet de connaître les objets qui n'ont plus de référence, qui ne sont donc plus utiles et qui sont alors détruits par le "ramasse miette" de l'OS.

- Après lancement de l'application, utilisation, puis arrêt, le fichier de trace a été créé.

A noter qu'à chaque exécution suivante, PB vous demande si vous souhaitez écraser le fichier de profiling pour actualiser les traces ou non:

http://img92.imageshack.us/img92/981/overwritequestiongq6.jpg


Pour utiliser les résultats, faire File / New:

http://img134.imageshack.us/img134/9262/nouveauonglettoolsng7.jpg

3 objets sont utilisables :

-> Profiling Class View : permet d'obtenir des informations de temps d'exécution pour les objets de l'application
-> Profiling Routine View : permet d'obtenir des informations sur l'utilisation des évènements / fonctions appelées dans l'application
-> Profiling Trace View : permet d'obtenir les mêmes informations que précédemment mais ordonnancée chronologiquement

(Note: En PB9, il faut sélectionner au préalable la target pour laquelle ou souhaite afficher le profiling)

- le Profiling Class View:

http://img143.imageshack.us/img143/4832/profilingclassviewqy3.jpg

Cet outil permet pour chaque objet de l'application (userobject, window, ...) par exemple u_dwa, de connaître le nombre d'appel par évènement / fonction (Hits)

-> Self correspond au temps cumulé pour chaque élément (évènement / fonctions) sans compter les routines appelées ("seulement lui même")
-> %Self correspond au temps précédent rapporté au temps total en pourcentage
-> Self + Called : Comme self + temps cumulé des routines appelées depuis cet évènement / fonction

Cet outil est surtout utile pour retrouver rapidement un objet (connaissant l'arbre d'héritage) et de voir son fonctionnement par événements et par fonctions


- Profiling Routine View

Nous retrouvons les mêmes éléments d'information qu'avec l'outil précédent (hits, self, ...), mais ordonnancés de manière à voir les routines appelées et les routines appelantes.

Fonctionnant en maître/détail, en cliquant sur un évènement sur la liste du milieu, les routines appelées (évènements / fonctions) sont listées au dessus, et la routine appelante est listée en dessous.

http://img294.imageshack.us/img294/2334/routineviewlo8.jpg

- Profiling Trace View, quant à lui,  permet d'obtenir des informations de manière chronologique

Cet outil qui, je trouve, est le plus utile car le plus synthétique, permet de comprendre le cheminement des appels d'évènement / fonctions et de pointer les endroits gourmands en temps d'exécution lors de l'exécution de l'application.

http://img148.imageshack.us/img148/9371/traceviewib2.jpg

Sinon, quelques éléments d'information en vrac (C'est du basique, mais çà ne fait pas de mal de le rappeler):

- Les pourcentages sont intéressants mais à condition de ne pas avoir d'éléments bloquants qui perturbent les temps de mesures (MessageBox !).
- Il est parfois moins efficace d'optimiser une fonction, que de supprimer les appels inutiles à celle-ci.
- En client-serveur, ce sont souvent les aller-retours multiples vers la base de données qui sont gourmands: Pensez à les limiter au maximum.
- Ces outils vous permettront entre autre de voir le degré d'importance de certains objets par leur nombre d'appels, et donc l'intérêt de les optimiser.

Voilà. En espérant que ces quelques lignes vous donneront l'envie d'utiliser ces outils et d'approfondir le sujet.


Note: Merci à Christophe NIGAUD pour ses conseils avisés sur le sujet.

Dernière modification par foon (22-03-2007 09:54:18)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#2 20-03-2007 10:07:10

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4655
Pépites: 933
Banque: 2,147,483,647
Site web

Re: [ASTUCE] Outils de debug et tuning sous PB






(je te credite de 50 pepites pour ton article)


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 22-03-2007 09:56:12

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [ASTUCE] Outils de debug et tuning sous PB

Mise à jour:

Une petite correction et quelques précisions sur la génération des fichiers de débogage et de trace pour profiling.

Voilàvoilàvoilà


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#4 22-03-2007 10:02:19

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4655
Pépites: 933
Banque: 2,147,483,647
Site web

Re: [ASTUCE] Outils de debug et tuning sous PB

foon a écrit:

Mise à jour:

Une petite correction et quelques précisions sur la génération des fichiers de débogage et de trace pour profiling.

Voilàvoilàvoilà

et moi je fais quoi ? je corrige les pepites distribuées ? 


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 22-03-2007 10:09:59

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [ASTUCE] Outils de debug et tuning sous PB

Des fois, çà fait pas de mal de se relire à tête reposée.

Je sais pas pour les pépites, mais je pense que j'ai droit à un


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#6 19-04-2007 08:33:26

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [ASTUCE] Outils de debug et tuning sous PB

un détail à propos de cette remarquable contribution

Debug en cours d'exécution:

- L'option "Just in time debugging" permet simplement de basculer en mode debug pendant une exécution normale (Run):

lorsqu'une appli plante en mode Run, le débuggeur prend la main et on peut analyser les scripts, variables en cours


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 19-04-2007 08:38:04

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [ASTUCE] Outils de debug et tuning sous PB

Effectivement, et c'est même très utile quand on a un plantage
(Souvenir de mes débuts sous PB6.5 )


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#8 09-01-2008 14:10:45

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [ASTUCE] Outils de debug et tuning sous PB

petite question bête : le tracing fonctionne en mode dev et/ou exe ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 09-01-2008 14:50:42

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [ASTUCE] Outils de debug et tuning sous PB

Personnellement, je l'ai toujours utilisé en mode dev.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#10 27-02-2012 16:43:39

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: [ASTUCE] Outils de debug et tuning sous PB

Bonjour,

avez vous des exemple des script permettant de tracer les requetes SQL


la vie est une course et il faut avoir un bon depart

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22