Debug/release

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 14 mai 2007 à 14:25
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 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???

4 réponses

emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
14 mai 2007 à 15:11
Salut,

un probleme de librairies je pense... Ca fait quoi comme erreur ?

Une autruche ne se cuit pas aux petits lardons.
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 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.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
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é... ;)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
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.
0
Rejoignez-nous