Bonjour à tous le monde,
dans un grand nombre de mes programme j'utilise la fonction OutputDebugString. Et ceci de la façon suivante :
En utilisant DebugView j'obtient bien le résultat attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure MyOutputDebugString(v: integer); begin if (v > 0) then OutputDebugString(PChar(FAppAlias + '>' + IntToStr(Abs(v)))) else OutputDebugString(PChar(FAppAlias + '<' + IntToStr(Abs(v)))); end;
Mais, dans chacune de mes applications, ou service, j'ai également insérer un code faisant office de moniteur d'entrée et de sortie des méthodes (cf. image ci-jointe) qui est codé comme suit :
Or ce code pèse, quelque peu, sur les performances de mes applications et demande à être maintenu, alors même que l'application ne requiert plus de maintenance. Pour éviter ces problèmes, je souhaiterais pouvoir récupérer et traiter (d'après un formatage spécifique) les chaines émise par la méthode " OutputDebugString ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure Mon(v: integer); begin {$IFDEF LEDMON} LedMon.SetLed(v); {$ENDIF} {$IFDEF DBGMON} DbgMon.MyOutputDebugString(v); {$ENDIF} end;
Après quelques recherche sur le MSDN, j'ai découvert la fonction " WaitForDebugEvent ". Je tente donc d'utiliser celle-ci pour récupérer les chaines émises lors des événements de type " OUTPUT_DEBUG_STRING_EVENT " (Cf. fichier " UChild.pas " ci-joint).
Bon jusque là je pense que je ne suis pas trop faux dans ma démarche (enfin j'espère). Hélas, trois fois hélas, cela ne semble par marcher. Pire encore, lorsque cela veut bien marcher et après fermeture de mon application de " debug " le processus l'application observer est détruit...
Donc, l'objet de ma demande consiste à savoir si une main secourable pourrais m'aiguiller quelque peu afin de trouver la " bonne " méthode.
Cordialement,
Dominique.
Partager