Programme marche en dev mais pas en prod [Résolu]

SourceS - 4 mai 2015 à 10:39 - Dernière réponse :  sources
- 4 mai 2015 à 20:32
Bonjour,

Je développe actuellement un programme en C#, mais j'ai un petit problème.
Celui marche parfaitement lorsque je le lance depuis visual studio, mais quand je le lance depuis l'exécutable généré, une methode plante ! Je n'arrive pas a comprendre ce que ça pourrais être. Je n'ai aucun message d'erreur. La fonction qui plante est un appel a une DLL C++, qui ne me renvois que True ou False, en fonctionnement normal elle me renvoie True sinon False, en dev j'ai True en prod False, avez vous déjà eu ce genre de problème ?
Comment je pourrais essayer de débugger ça ?

La fonction qui plante fait appel à de la communication série , elle est sensée bootloader un CPU

Merci d'avance

Update :
Après avoir regardé l'observateur d'événements je tombe sur ça :

FlashControl.exe
1.0.0.0
55472931
st10flasher.dll
2.4.0.0
40f3a927
c0000005
0000192d
1664
01d08641a412c546
D:\Developpements\FlashControl\FLASH CONTROL\FlashControl\FlashControl\bin\x86\Debug\FlashControl.exe
D:\Developpements\FlashControl\FLASH CONTROL\FlashControl\FlashControl\bin\x86\Debug\st10flasher.dll
e5f9bf86-f234-11e4-8272-0862660daebe


J'ai aussi celle-ci :
Le serveur {XXXXXXX-86EC-4194-9CE5-13C15DCB2001} ne s'est pas enregistré sur DCOM avant la fin du temps imparti.

Ainsi que ça :

Application : FlashControl.exe Version du Framework : v4.0.30319 Description : le processus a été arrêté en raison d'une exception non gérée. Informations sur l'exception : System.AccessViolationException Pile : à FlashControl.com.Dll_CPU_interface.LoadFile(System.String) à FlashControl.logic.CPU_Flasher.load_file(System.String) à FlashControl.views.MainWindows.flasher() à System.Threading.ThreadHelper.ThreadStart_Context(System.Object) à System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) à System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) à System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) à System.Threading.ThreadHelper.ThreadStart()
Afficher la suite 

Votre réponse

6 réponses

NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 4 mai 2015 à 14:04
0
Merci
As-tu essayé de compiler en Release ?
Car utiliser la version Debug peut parfois causer quelques soucis.
Commenter la réponse de NHenry
0
Merci
Oui, j'obtiens la même erreur, je pense que ça viens d'un DLL non managée que j'utilise. mais je ne trouve pas la raison
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 4 mai 2015 à 16:01
Comment as-tu déclaré la fonction ?
Comment l'appelles-tu (avec les déclarations des variables) ?
SourceS > NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 4 mai 2015 à 16:08
Je les appelles comme ça :
 int result = com.Dll_CPU_interface.LoadFile(filename);


et les déclarent de cette manière :
[DllImport(@"st10flasher.dll")]
public static extern int SetComSpeed(string PortName, int ComSpeed);
[DllImport(@"st10flasher.dll", CharSet = CharSet.Ansi)]
public static extern int LoadFile(string FileName);
[DllImport(@"st10flasher.dll", CharSet = CharSet.Ansi)]
public static extern int InitMonitor(string Target);
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 4 mai 2015 à 20:11
Es-tu sûr du prototype de la fonction ? Car le message d'erreur laisse entendre que l'appel a dévié sur la pile.

Essayes peut être de loguer les valeurs passées en paramètre, peut être que l'environnement changeant, cela change aussi ton paramètre (même si ce n'est pas prévu).
Le problème est réglé j'ai oublié de mettre à jour le poste. Effectivement tu as raison c'était bien un problème de paramètre (Je n'avais pas accès au prototype des fonctions). Cependant je n'explique toujours pas que ça marchais sur VS en dev, etant donné qu'il manquais un paramètre dans mon LoadFile et tous les int était des long. Merci d'avoir pris le temps de m'aider !
Commenter la réponse de SourceS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.