infodaoudi
Messages postés117Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention30 mars 2012
-
14 mai 2007 à 14:25
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
14 mai 2007 à 20:36
bonjour codeur,
quel est la différence en le mode debug et release, mon code s'execute bien en debug et se plate en release, je ne pas quel est le probleme???
THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008 14 mai 2007 à 15:40
Un programme compilé en mode debug contient des informations permettant
son deboggage. Il est donc en général plus lent qu'un programme compilé
en release qui lui est optimisé.
Pour te donner un exemple, si ton programme plante pendant son
execution, en mode debug le deboggeur a la possibilité de t'indiquer
l'endroit dans ton programme ou il y a eu un probleme ainsi que la
raison du plantage.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 14 mai 2007 à 20:09
Il est probable que tu écrives en dehors de zones mémoires allouées.
Ca plante rarement en debug (la mémoire est gérée légèrement différemment) mais toujours en release.
... quoique je me souviens avoir abandonné un projet à cause de ça... il fallait que j'ajoute 46 octets de mémoire statique dans une classe pour que ça ne plante pas en release.
Bref, sauf cas extrêmes, c'est à 99% de chance d'être une écriture ou lecture dans une zone interdite. Un delete sur un pointeur nul est si vite arrivé... ;)
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 14 mai 2007 à 20:36
J'ai du mal a comprendre pk tu devais ajouter de la mémoire. A mon avis, c'est venait d'un pb de conception. A part les problèmes de conversion entre classes, je vois pas trop de pb qui peuvent causer ce genre de soucis.
Pour la différence entre debug et release, il peut etre intéressant d'ajouter des séries de tests pour vérifier la validité des arguments de fonction, controller le déroulement du programme etc ...
Exemple:
#ifdef _DEBUG // depend du compilo je crois
#define ASSERT(X) { if (!(X)) throw Exception.... } // en debug
#else
#define ASSERT(X) // en release, on fait rien
#endif
void Calcul_Factoriel(int _n)
{
ASSERT(n >= 0); // Test effectué seulement en mode debug. En release, ce code n'est pas compilé.
...
}
C'est un mauvais exemple, mais voila un des trucs qu'on peut utiliser pour faciliter le débbugage.