Bonjour,
J'ai un programme (application console) vb.net 2.0 utilisant des librairies de génération PDF et graphiques. Ce programme lancé sur ma machine fonctionne bien. Je place ce programme sur une autre machine, je le lance en ligne de commande. Tout va bien. Je le lance via un service windows (installé avec droits admin) avec l'objet .net process, et il bloque toujours au meme endroit. Je rajoute des traceurs pour savoir exactement ou il plante. Il continu à planter à un endroit différent du code. Je le rééxécute et il continu toujours à planter toujours au meme endroit (endroit qui a changé depuis que j'ai ajouté des lignes de code). Je rajoute encore des lignes de traceurs. Il plante ailleur. je le relance il plante encore au meme endroit. Même si ce n'est pas ce morceaux de code qui est remis en question je l'explique
quand je regarde mon fichier log, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // debut de programme traveur.ecrire("debut prog") // boucle un certain nombre de fois ... traceur.ecrire("etape 1") try monobjetsimple.variabletypestring = autreobjetsimple.autrevariabletypestring catch ex as exception traceur.ecrire("erreur : " & ex.tostring) end try traceur.ecrire("etape 2") ... // fin boucle traveur.ecrire("fin prog") // fin programme
...
debut prog
etape 1
... et rien d'autre
Ca semble planter soit à l'affectation de la variable soit au traceur avant de logger dans le fichier. Je me répète, si je rajoute des lignes de traceur, ca va planter ailleur, mais toujours au meme endroit ailleur (hein !?
Je n'ai jamais d'exception de levée. ce n'est pas un prog avec gestion implicit de plusieurs threads. Je n'ai rien dans le journal d'evenement windows.
Le programme semble être en execution suspendue.
D'un point de vue mémoire du processus. La taille varie est se stabilise au moment de la suspension d'execution puis quelques minutes apres augmente de ~2Mo puis stagne indéfiniment. Le programme occupe 28Mo au total en mémoire et la machine à 1.7Go de mémoire vive libre.
J'ai une gestion d'exception assez précise dans le sens ou chaque bloque de code est englobé par un try catch, et pour ce cas de figure j'ai ajouté le code suivant qui ne lève rien (et dont je ne comprend pas bien l'utilisé dans non plus)
----
----
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim currentDomain As AppDomain = AppDomain.CurrentDomain AddHandler currentDomain.UnhandledException, AddressOf MYExceptionHandler
Mes questions :
Avez vous déjà rencontré ce problème ?
Comment le débuguer, avec quels outils ?
Je suis actuellement en train de me dire que c'est un pb mémoire et que je vais devoir dérouler tout le prog pour voir si tout les objets sont bien "fermés/libérés" (pas de controle, puisque c'est le GC qui gère, mais bien coder c'est importantmais rien n'est moins sûr que ca corrige le pb.
Environements :
Mon poste :
win xp pro sp2 / visual studio 2005 / DotNet 2 / 2Go Ram
Serveur :
win server 2003 web edition sp 2 / 2Go Ram
Partager