Question existentielle

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 18 sept. 2007 à 15:08
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 19 sept. 2007 à 16:06
Bonjour,

Voila j'ai un probleme avec un programme qui par moment peut générer des erreurs: sur des strcat ou autre bref une fenetre d'erreur s'affiche avec le traditionnel "abandonner,recommencer,ignorer"
le probleme est que cette application d'apres le gestionnaire des taches est encore en cours d'execution, moi je m'attendais a ce qu'il affiche "ne reponds pas".
le truc est que je veux pondre un petit programme qui regarde les processus lancés et si "ne reponds plus" ben je relance...
la je trouve ca louche que il y ait une erreur détéctée et que ca tourne encore ...
vous en pensez quoi?

 

11 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
18 sept. 2007 à 17:38
Sur des strcat ? Si tu manipule des zones mémoires, c'est presque sur qu'il s'agit d'un débordement tampon.
Démarre le débuggeur pour localiser la zone surchargé.

C++ (@++)<!--
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 09:58
oui enfin la pour tester mon 2eme programme: qui surveille le processus et relance si processus planté, j'ai fait expres de faire planter mon processus en placant un strcat bidon....
c'était juste pour forcer le plantage.
car mon application est susceptible de planter à n'importe quel moment mais malgres toutes mes sécurités, on ne sait jamais!
du coup c'est a partir de la que j'ai imaginer faire ma surveillance de processus!
Mais dans certains cas de plantage en fait mon processus est encore dans le gestionnaire de taches noté comme : "encours d'execution"

voila du coup ma surveillance ne sert a  rien dans ces cas precis!
donc je me demandais comment detecter que mon processus plante?

 
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 sept. 2007 à 12:01
Envoie au processus ciblé un message asynchrone (avec PostThreadMessage) personnalisé, qui doit avoir pour but de renvoyer un message au processus testant la cible. Si le premier est planté, il ne répondra jamais et donc au bout d'un certain temps tu peux le considérer comme planté.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 13:17
mais justement ce n'est pas ce que fait le taskmanager?

pour mon deuxieme programme j'étais parti sur du VB.net...

on peut communiquer? de la meme facon?

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 sept. 2007 à 13:33
Ah je ne sais pas; en tout cas cette méthode permet de surveiller seulement l'activité d'un seul thread, si ton prog est multithread il faut envoyer un message à chaque thread pour vérifier qu'aucun n'est planté. Quant au VB.net...si tu peux gérer les messages ça doit marcher aussi, dans le cas contraire faut trouver autre chose.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 13:39
ouais c'est du multithread effectivement
et la j'avais fait un prog VB.net qui surveiller la presence du processus dans la liste des taches et son état ....
on ne peut pas communiquer direct avec le programme?juste les threads?

apparthée:
Mais ta réponse me fait me remettre en cause sur autre chose
car j'ai un module qui surveille mes différents threads et je n'ai pas utiliser cette fonction de Message, j'ai utilisé un compteur
je vérifie ce compteur de l'exeterieur toutes les X min et si le compteur = compteur X minutes avant ben j'en deduis que mon thread est planté
donc je killl et relance!

 
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 13:51
je viens de faire un test et mon probleme est que : mon appli tourne puis genere une erreur(provoquée volontaireemnt pr le test)
je laisse en l'état ( je n'appuie ni sur recommencer,ignorer,abandonner)
puis ja lance un autre programme qui sert d'IHM qui communique avec mon programme principal.
et la miracle les 2 programmes communiquent correctement!

du coup je n'arriverais jamais a savoir si mon programme principal est planté vu que celui ci ne plante pas meme lors d'erreur détécté....
c'est louche?! en tout cas ca me depasse un peu....

 
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 sept. 2007 à 14:38
Un processus est composé de threads (c'est ça qui est exécuté) donc quand tu veux communiquer avec un processus tu communiques avec un de ses threads. Le truc c'est qu'alors il faut que tu surveilles tous les threads pour savoir si le processus a planté => gestion des messages à mettre en place dans TOUS les threads du prog ciblé; ou alors ton compteur ça marche sûrement aussi mais il faut en mettre un dans chaque thread pareil.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 15:19
oui oui bien sur j'ai mis un compteur pour chaque thread
a priori ca marche mais c'est vrai que c'est de la bidouille....

pr ma surveillance de mon processus c'est trop louche en gros faudrait que je refasse tout avec des try catch et si pb détécté ben je quitte l'appli et hop ensuite elle est relancée automatiquement, c'est peut etre la seul chose a faire, vu qu'apparement mes threads fonctionnent encore malgres tout!

 
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 sept. 2007 à 16:01
C'est sûr que le meilleur à faire est de sécuriser l'appli elle-même et non de la surveiller de l'extérieur.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 sept. 2007 à 16:06
et oui mais on ne prevoit pas tjrs tous les bugs possibles ....
jsuis débutant apres tout!

 
0
Rejoignez-nous