Problème curieux...
-
- Messages : 83
- Inscription : lun. 20/sept./2004 18:21
- Localisation : derriere toi fais gaffe!
Problème curieux...
Bonjour à tous!
Je me retrouve face à un problème assez curieux, à savoir, j'ai un code qui s'exécute très bien en mode debug.... mais qui plante (sans message d'erreur) en mode normal!
je poste pas ici directement le code car je voudrais d'abord savoir si vous avez déjà été confronté à ce genre de situation....
pour info (et pour les intéressés) j'utilise l'include FTP (fonctions ftp codées en purebasic, pour une portabilité) de Num3 posté sur le forum anglais.
bien évidemement si besoin est, je vous posterai tout mon code.
merci d'avance.[/b]
Je me retrouve face à un problème assez curieux, à savoir, j'ai un code qui s'exécute très bien en mode debug.... mais qui plante (sans message d'erreur) en mode normal!
je poste pas ici directement le code car je voudrais d'abord savoir si vous avez déjà été confronté à ce genre de situation....
pour info (et pour les intéressés) j'utilise l'include FTP (fonctions ftp codées en purebasic, pour une portabilité) de Num3 posté sur le forum anglais.
bien évidemement si besoin est, je vous posterai tout mon code.
merci d'avance.[/b]
Asus bien? asus tres bien!
-
- Messages : 83
- Inscription : lun. 20/sept./2004 18:21
- Localisation : derriere toi fais gaffe!
Merci de vos promptes réponses...
Effectivement OnError était de très bon conseil je devrai meme l'utiliser plus souvent...
J'ai obtenu la description d'erreur suivante:
J'ai placé le OnError comme ceci:
j'en déduis donc que l'appel de la fonction provoque le crash (en plus la ligne 259 correspond à l'appel de la fonction donc je n'ai pa grand mérite haha)
pour info je n'appelle pas cette fonction comme un thread, et elle n'est pas appellée par un thread, mais depuis une fonction elle même appellée par un thread.
Ceci dit, pourquoi cela buguerai en mode normal et pas en mode debug?...
je vais chercher du coté d'une portion de code inclue dans un debug....
merci à vous!
Effectivement OnError était de très bon conseil je devrai meme l'utiliser plus souvent...
J'ai obtenu la description d'erreur suivante:
Donc si j'ai bien compris le programme tente d'acceder à une zone mémoire non réservée..An attemped read or write to/from an address to which that process isn't allowed ligne 259
J'ai placé le OnError comme ceci:
Code : Tout sélectionner
Procedure FTP_Store(Ftp.l, filename.s, ProgBarGadgetID.l, Log_Gadget)
OnErrorResume()
Resultat$ = GetErrorDescription()
Resultat$ = Resultat$ +" ligne "+ Str(GetErrorLineNR())
ConnectionID = 0
pour info je n'appelle pas cette fonction comme un thread, et elle n'est pas appellée par un thread, mais depuis une fonction elle même appellée par un thread.
Ceci dit, pourquoi cela buguerai en mode normal et pas en mode debug?...
je vais chercher du coté d'une portion de code inclue dans un debug....
merci à vous!
Asus bien? asus tres bien!
J'ai déja eu un problème similaire avec les chaines de caractères dans des librairies compilées avec Tailbite.
En mode Debug tout marchait très bien, mais avec le programme compilé rien à faire ça ne marchait pas du tout.
La procédure devait retourner une chaine après quelques manipulations, mais elle me retournait le caractère BackSpace ou quelque du genre.
A+
Guimauve
En mode Debug tout marchait très bien, mais avec le programme compilé rien à faire ça ne marchait pas du tout.
La procédure devait retourner une chaine après quelques manipulations, mais elle me retournait le caractère BackSpace ou quelque du genre.
A+
Guimauve
-
- Messages : 83
- Inscription : lun. 20/sept./2004 18:21
- Localisation : derriere toi fais gaffe!
Après plusieurs traçages de variables (faits avec des messagerequesters le programme fonctionnant en debug....) j'ai constaté ce qui clochait sans vraiment comprendre pourquoi.
A savoir, la procédure FTP_STORE prends des paramètres, ces paramètre je les fournissait comme ça:
à savoir des membres de la structure donnees
Apparement ce passage fonctionne bien en debug, mais pas en normal: après avoir controllé les parametres recus par Ftp_Store, c'était du n'importe koi! alors évidemement mauvais accès mémoire et tout ce qui s'ensuit...
j'ai donc réglé le problème en déclarant la structure en global et en y accedant directement depuis ftp_store (je bypasse les paramètres).
Je sais que c'est goret, j'aurais aussi bien pu passer le pointeur de la structure en paramètre mais bon...
reste à savoir pourquoi un tel passage de paramètre fonctionne en debug et non en normal.
D'autant plus que même si je remplissais des variables "normales" avec le contenu des membres de la structure, et que je passais ces variables en paramètre, ça foirait! C'est vraiment le passage de paramètre qui à foiré sur ce coup là. c'est vraiment bizarre, un bug de purebasic?.
Vivement le threadsafe? oui c'est certain, mais les problèmes strings+thread concernent à la fois le debug et normal non?
curieux...
A savoir, la procédure FTP_STORE prends des paramètres, ces paramètre je les fournissait comme ça:
Code : Tout sélectionner
FTP_Store(donnees\IdFtp,donnees\DossierThumbs+DirectoryEntryName(), #ProgressBar_1)
Apparement ce passage fonctionne bien en debug, mais pas en normal: après avoir controllé les parametres recus par Ftp_Store, c'était du n'importe koi! alors évidemement mauvais accès mémoire et tout ce qui s'ensuit...
j'ai donc réglé le problème en déclarant la structure en global et en y accedant directement depuis ftp_store (je bypasse les paramètres).
Je sais que c'est goret, j'aurais aussi bien pu passer le pointeur de la structure en paramètre mais bon...
reste à savoir pourquoi un tel passage de paramètre fonctionne en debug et non en normal.
D'autant plus que même si je remplissais des variables "normales" avec le contenu des membres de la structure, et que je passais ces variables en paramètre, ça foirait! C'est vraiment le passage de paramètre qui à foiré sur ce coup là. c'est vraiment bizarre, un bug de purebasic?.
Vivement le threadsafe? oui c'est certain, mais les problèmes strings+thread concernent à la fois le debug et normal non?
curieux...
Asus bien? asus tres bien!
Il ya bien 2 ans LSI a posté un code dans la section bug pour un plantage grave
j'ai regardé son code et pour tracer l'erreur j'avais mis des debug et puis plus d'erreur ...
J'ai fini par trouver le problème suivant
La définition de la structure PB était fausse (structure d'une API), elle avait évoluée avec les versions des OS de MS. On avait un plantage car la pile était écrasée, on atterrisant n'importe ou en mémoire...
Les débug ajoutés après la ligne de code incriminée faisait que c'était les valeurs situées après ma ligne de code qui étaient écrassées et plus l'adresse de retour de la procédure, donc ça fonctionnait
C'est peut-être la cause du problème, vérifie ta structure
j'ai regardé son code et pour tracer l'erreur j'avais mis des debug et puis plus d'erreur ...
J'ai fini par trouver le problème suivant
La définition de la structure PB était fausse (structure d'une API), elle avait évoluée avec les versions des OS de MS. On avait un plantage car la pile était écrasée, on atterrisant n'importe ou en mémoire...
Les débug ajoutés après la ligne de code incriminée faisait que c'était les valeurs situées après ma ligne de code qui étaient écrassées et plus l'adresse de retour de la procédure, donc ça fonctionnait
C'est peut-être la cause du problème, vérifie ta structure