Les phases d'optimisation et de mise au point des applications WINDEV sont simplifiées à l'extrême grâce aux outils inclus en standard :
  • l'analyseur de performances disponible en développement et dans les applications déployées permet de connaître immédiatement les traitements sur lesquels porter une attention.
  • l'audit statique permet de maitriser parfaitement le contenu d'une application, de son pack d'installation.
  • enfin l'audit dynamique permet durant l'exécution d'avoir un rapport très détaillé sur la mémoire utilisée, les déclenchements du mécanisme de sécurité du WLangage qui n'auraient pas été testés par le développeur...

Mais il devient plus délicat de rechercher des optimisations, ou de déterminer l'origine d'un comportement inattendu, lorsque l'une de vos applications est dépendante d'un autre processus dont vous n'avez pas la maîtrise.

Un utilitaire "ProcMon" de la gamme "Windows Sysinternals" est alors très pratique, car il permet de suivre l'activité d'un processus quelconque et notamment ses entrées/sorties disque et réseau. Cela permet de rapidement repérer des échecs d'accès à des données, de communications, des ralentissement ...

Sur le même principe que l'analyse de trames décrite dans un billet précédent, voici les bases nécessaires pour démarrer simplement avec "ProcMon" (installation standard par assistant).

Au premier lancement il est intéressant d'ignorer la fenêtre "Process Monitor Filter" afin d'avoir une vue d'ensemble de l'utilitaire. Cela permet de se rendre compte des entrées / sorties constantes des applications lancées, et surtout de voir qu'il est en l'état impossible d'entreprendre un quelconque débogage !

La première action à effectuer consiste donc à filtrer la surveillance afin qu'elle ne s'applique qu'à une application :
  • menu "Tools ... Process Tree" (Ctrl+T),
  • sélectionner l'application dans la liste ("Mon_Projet.exe" dans l'image),
  • boutons "include process" puis "Close".

 

Un filtre est alors mis en place afin que les entrées/sorties affichées soient uniquement celles de l'application sélectionnée. Le menu "Filter" permet à tout moment de modifier les filtres, par exemple pour suivre les échanges entre plusieurs processus.

Il suffit maintenant d'effectuer dans l'application les opérations pour lesquelles un mauvais comportement est suspecté, pour voir en détail ce qu'il se passe au niveau système. Dans la copie d'écran suivante, on voit que l'application "Mon_Projet" a tenté de lire un fichier inexistant :

 

 

Le menu "Filter ... Highlight" est également à connaître, car il permet de mettre en évidence des lignes de captures qui correspondent à une opération donnée (sélection des actions puis clic sur "Add"), ou un résultat donné. Voici un exemple montrant la mise en évidence des connexions réseau, et les éventuels échecs de lecture :


Pour terminer ce tour d'horizon de l'utilitaire, il est bon de connaître :
  • les principaux raccourcis :
    • Ctrl+X afin de vider la trace,
    • Ctrl+A pour activer le mode "Auto Scroll" et avoir le défilement constant,
    • Ctrl+T pour accéder à la liste des processus,
    • Ctrl+H pour gérer les lignes mises en évidence.
  • le menu "Tools ... Files summary" qui permet d'avoir une synthèse classée par extension ou dossier les différents fichiers utilisés lors de l'exécution. Il n'est pas rare par ce moyen dans ses propres applications de trouver un fichier oublié que l'on ne pensait plus utiliser !
Mise à jour 28/5/2019
L'utilitaire Procmon peut également être "accroché" à un exécutable lancé en service. Très utile en cas de doute sur l'emplacement de dépendances utilisées par un service lorsqu'il démarre.
Mise à jour 21/1/2020
Un exemple de filtre pour surveiller les actions du serveur d'application WEBDEV pour une session d'un utilisateur qui accède à un site web ou consomme un webservice SOAP / REST (le processus WD250SESSION* sera lancé pour l'exécution du WLangage sur le serveur) :

Mise à jour 14/10/2020
Un exemple de filtre pour surveiller toutes les actions faites par un processus, sur un type de fichier précis :
On pourrait avoir dans le filtre uniquement le "path ends with..." si l'on voulait connaître tous les processus qui manipulent les fichiers d'extension .cr. Ou un filtre "Path begins with" pour voir toutes les entrées / sorties d'un dossier donné....

< Retour