website logo
Auteur
avatar
Tcheko

Forum » » Développement » » Layers


Post� : 01-11-2010 20:29 icone du post

Yop,

Tu peux remplacer les AllocPooled & FreePooled par des AllocVecTaskPooled/FreeVecTaskPooled (qui fait approximativement la même chose et qui, cerise sur le gâteau, les blocs n'ayant pas fait l'objet d'une libération le sont à la sortie du programme).

Concernant le plantage, il n'a pas lieu dans le code que tu nous as passé. Si le debug indique un pointeur invalide, c'est que tu dois lui fournir une mauvaise adresse. Assure toi de ne pas modifier le pointeur entre l'allocation et la libération.
Si le pointeur est bon, alors peut être qu'il y a un trash dans les octets qui précèdent le bloc alloué.

Un coup de wipeout (dispo dans le sdk) peut aider pour trouver les erreurs liés à la mémoire. (la dernière fois que je l'ai utilisé, j'ai retiré trois bugs lié à la mémoire, sur des trucs qui semblaient anodins mais en fait pas du tout...)

Egalement, le tutoriel de henes concernant le déboguage est indispensable pour débusquer les bugs.

Compiler sans optimisations, avec -g.
Linker avec -ldebug et truffer le code de kprintf("xxxx").

Une macro utile :

#ifdef DEBUG
#define D(x) x
#else
#define D(x)
#endif

et placer le kprintf("...") dedans.

Un #define DEBUG suffit pour activer/desactiver le debug (bien utile pour une release sans sortie debug).

textrgb est une globale? :)

Sinon, bonne chasse.

:)

Cet article provient de Meta-MorphOS
https://www.meta-morphos.org/viewtopic.php?topic=661&forum=52