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

Signaler
-
 sources -
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()

2 réponses

Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
As-tu essayé de compiler en Release ?
Car utiliser la version Debug peut parfois causer quelques soucis.
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
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
Comment as-tu déclaré la fonction ?
Comment l'appelles-tu (avec les déclarations des variables) ?
>
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021

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);
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
156
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 !