Conseille sur le debugage !
Conseille sur le debugage !
j'ai un petit problème ...lorsque je compile mon jeu le compilateur plante...
PBCompiler.exe a rencontré un problème et doit fermer...
Comment savoir d'où vient l'erreur. J'ai mis en commentaire toute les dernières modifications une part une...mais apparement il n'y a pas d'erreur dans là...ça doit être un vieux bug qui n'apparait que maintenant.
Comment feriez vous pour trouver ou est l'erreur ?
Merci
Thy
PBCompiler.exe a rencontré un problème et doit fermer...
Comment savoir d'où vient l'erreur. J'ai mis en commentaire toute les dernières modifications une part une...mais apparement il n'y a pas d'erreur dans là...ça doit être un vieux bug qui n'apparait que maintenant.
Comment feriez vous pour trouver ou est l'erreur ?
Merci
Thy
si quelqu'un veut essayer de le compiler chez lui
File:1->Aliens-Source.zip

avec le debugger activé la première fois marche tres bien. Quitter le jeu...puis ressayer de le compiler...et là POuf plantage ...
File:1->Aliens-Source.zip

avec le debugger activé la première fois marche tres bien. Quitter le jeu...puis ressayer de le compiler...et là POuf plantage ...

bon je viens de tester. pareil gros plantage.
la première fois (avec le debugger)
j'ai une erreur à la ligne 143 dans le fichier preferences.pb :
StartDrawing(ScreenOutput())
The specified output is NULL (0 value).
la deuxième fois - plantage réel du compilateur comme toi.
en redémarrant complètement jaPBe çà refonctionne pour un coup.
la première fois (avec le debugger)
j'ai une erreur à la ligne 143 dans le fichier preferences.pb :
StartDrawing(ScreenOutput())
The specified output is NULL (0 value).
la deuxième fois - plantage réel du compilateur comme toi.
en redémarrant complètement jaPBe çà refonctionne pour un coup.
en ce qui me concerne je n'ai plus de probleme si je remplace le bout de code de la ligne 143 à 160 du fichier preferences.pb avec :
il faut toujours tester le resultat de StartDrawing() et ne commencer à dessiner/tracer que si cette fonction renvoi vrai.
mais ca vient peut etre d'ailleurs....
Code : Tout sélectionner
If StartDrawing(ScreenOutput())
DrawingFont(FontID(1))
DrawingMode(#PB_2DDrawing_Transparent)
sel=Int((MouseY()-100)/40)
If sel>=0 And sel <= NbAlienprefs
Box(50,sel*40+100,300,20,RGB(255,0,0))
EndIf
For z=0 To NbAlienprefs
DrawText(50,100+z*40,AlienPrefs(z)\txt,RGB(255,255,255))
result.s=StringField(AlienPrefs(z)\choice, AlienPrefs(z)\index, "|")
d=FindString(AlienPrefs(z)\choice,result.s,0)
x=TextWidth(Mid(AlienPrefs(z)\choice,0,d-1))
l=x=TextWidth(result)
Box(250+x,100+z*40,l,20,RGB(0,255,0))
DrawText(250,100+z*40,AlienPrefs(z)\choice,RGB(255,255,255))
Next
StopDrawing()
EndIf
mais ca vient peut etre d'ailleurs....
Mercu Flype d'avoir jeter un oeil ! C'est sympa !
Helas j'ai l'impression que le plantage du compilateur ne viens pas de là !
Chez moi ça ne change rien...toujours un gros plantage du compilateur la deuxième fois que je compile avec le debogueur actif....
Je sais vraiment pas comment je peux trouver où est le problème.
Je suppose que ça ne peut pas venir du Debogueur lui même ?2 jours que je m'arrache les cheveux ....
Helas j'ai l'impression que le plantage du compilateur ne viens pas de là !
Chez moi ça ne change rien...toujours un gros plantage du compilateur la deuxième fois que je compile avec le debogueur actif....
Je sais vraiment pas comment je peux trouver où est le problème.
Je suppose que ça ne peut pas venir du Debogueur lui même ?2 jours que je m'arrache les cheveux ....
connais tu cette limitation (problème de taille de pile dans les procedures) ?
http://www.purebasic.fr/english/viewtopic.php?t=22026
Pour résumé, dans une procédure, si on fait des Dim, il faut se méfier et toujours avoir à l'esprit cette limite.
Je me suis fait avoir aussi et çà avait été la galère a trouver.
Peut-être que ton problême vient de là car je crois voir que tu utilises souvent des gros tableaux en local (déclarés dans les procedures).
On va essayer de t'aider, on va bien trouver, d'autant que çà le fait chez tout le monde.
http://www.purebasic.fr/english/viewtopic.php?t=22026
Pour résumé, dans une procédure, si on fait des Dim, il faut se méfier et toujours avoir à l'esprit cette limite.
Je me suis fait avoir aussi et çà avait été la galère a trouver.
Peut-être que ton problême vient de là car je crois voir que tu utilises souvent des gros tableaux en local (déclarés dans les procedures).
On va essayer de t'aider, on va bien trouver, d'autant que çà le fait chez tout le monde.
A non je ne savais pas ça, j'ai du passé a côté...En tout cas merci c'est toujours bon a savoir !Flype a écrit :connais tu cette limitation (problème de taille de pile dans les procedures) ?
http://www.purebasic.fr/english/viewtopic.php?t=22026
Je vais regarder de plus prêt mon code voir ou je pourrais rencontrer se problème.Flype a écrit : Peut-être que ton problême vient de là car je crois voir que tu utilises souvent des gros tableaux en local (déclarés dans les procedures).
Juste une question il n'y a pas ce problème avec les tableaux en Global ou bien en dehors d'une procédure c'est bien ça ?
Merci c'est vraimen tres sympa ! la chose curieuse c'est que sur le forum anglais 2 personnes on testé et n'on pas eu le problèmeFlype a écrit : On va essayer de t'aider, on va bien trouver, d'autant que çà le fait chez tout le monde.

http://www.purebasic.fr/english/viewtop ... sc&start=0
il faut regarder a partir du message du 4 avril. Avant c'était pour un autre bug qui finalement était trouvé il y a quelques temps.
Le plus curieux c'est que je viens de rentrer chez moi .. et sur l'ordinateur de ma femme je n'arrive pas a reproduire le plantage....Alors je ne comprends plus rien ... je continue de chercher. En tout cas un grand merci pour l'aide !
Fausse joie..ça plante aussi sur l'ordinateur de ma femme... en verité si je desactivre un gros module n'importe lequel alors plus de plantage (part exemple vehicle.pb) mais ce n'est pas pour ça que le module en question est fautif au plantage.
Un peu comme si mon code ne devait pas depasser une certaine taille ...et des que je l'ateind ! et bien ça plante
J'ai repris tout mes fichiers un part un hier soir ... je ne vois vraiment pas d'où ça pourrait venir ..C'est dommage d'avoir bosser pendant des mois sur un projet...et de se demander si on pourra un jour le terminer.
Quelqu'un aurait il une idée d'où vient l'erreur ?
Un peu comme si mon code ne devait pas depasser une certaine taille ...et des que je l'ateind ! et bien ça plante

J'ai repris tout mes fichiers un part un hier soir ... je ne vois vraiment pas d'où ça pourrait venir ..C'est dommage d'avoir bosser pendant des mois sur un projet...et de se demander si on pourra un jour le terminer.
Quelqu'un aurait il une idée d'où vient l'erreur ?
je n'ai pas regardé cette partie, cette fonction cherchechemin() est récursive j'imagine ?
combien de fois s'appelle t elle elle-meme au max ?
car imagine, si cette fonction alloue un nouveau tableau a chaque appel, à la fin de la routine, dans le pire des cas (il faut toujours etudier le pire des cas m'a t on appris à l'ecole) on se retrouve avec enormement de memoire immobiliser... jusqu'a la sortie de la fonction. effectivement c'est une bonne piste.
combien de fois s'appelle t elle elle-meme au max ?
car imagine, si cette fonction alloue un nouveau tableau a chaque appel, à la fin de la routine, dans le pire des cas (il faut toujours etudier le pire des cas m'a t on appris à l'ecole) on se retrouve avec enormement de memoire immobiliser... jusqu'a la sortie de la fonction. effectivement c'est une bonne piste.
Elle est appelé tres souvant, mais elle n'est pas récursive ! Pour l'instant toujours pas de plantage ...je vais netoyer un peu le code et reposter les sources dans la journée. Je te tient au courant !Flype a écrit :je n'ai pas regardé cette partie, cette fonction cherchechemin() est récursive j'imagine ?
combien de fois s'appelle t elle elle-meme au max ?
car imagine, si cette fonction alloue un nouveau tableau a chaque appel, à la fin de la routine, dans le pire des cas (il faut toujours etudier le pire des cas m'a t on appris à l'ecole) on se retrouve avec enormement de memoire immobiliser... jusqu'a la sortie de la fonction. effectivement c'est une bonne piste.
Vraiment un tres grand merci pour ton aide précieuse !
Et non c'est pas ça ... Grrrrrrrrr
En verité des fois tu change ta façon de faire (sachant que l'ancienne et la nouvelle methode sont bonne) et du coup plus de plantage...Tu es tout contant ....tu recommence coder...et puis d'un seul coup tu rajoute une simple variable et hop ça recommence..... Bref c'est pas resolu
voilà la dernière version du code ...
File:1->Aliens-Source.zip

Est-ce que ça plante toujorus chez vous ? Une autre idée ?
En verité des fois tu change ta façon de faire (sachant que l'ancienne et la nouvelle methode sont bonne) et du coup plus de plantage...Tu es tout contant ....tu recommence coder...et puis d'un seul coup tu rajoute une simple variable et hop ça recommence..... Bref c'est pas resolu
voilà la dernière version du code ...
File:1->Aliens-Source.zip

Est-ce que ça plante toujorus chez vous ? Une autre idée ?