IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut Code blocks : programme fonction en mode debug et non en release (0 warning) et tourne sur d'autres postes
    Bonjour a tous,

    J'ai un programme qui s’exécute correctement en mode debug et non en release. Petit tour sur les warnings qui sont au nombre de 0.Alors, je me demande si le debug fournit des valeurs au départ en terme de mémoire ou d'initialisation de variable qui lui permette d'aller jusqu'au bout mais je ne trouve rien et magie, mon collègue l'embarque sur son PC et il fonctionne parfaitement bien . Petite précision, j'ai réinstallé code block mais sans plus de réussite.

    Je pense que mon collègue n'a pas changer la configuration initale de code blocks.

    C'est un problème machine?

    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    As-tu bien activé tous les warnings avec l'équivalent de -Wall -Wextra de gcc ou /W4 de visual studio?

    Quand ca ne fonctionne pas en release, mais en débug, en général, c'est parce que le mode débug initialise scrupuleusement toutes les variables à 0 par défaut.
    C'est notamment le cas des pointeurs.

    Pour résoudre le problème, il n'y a que trois choses à faire:
    • Utiliser un débuggeur pour savoir ce qui pose problème.
    • Réduire les portées des variables
    • Initialiser les variables aussi tôt qu'elles sont déclarées. C'est à dire déclarer les variables uniquement quand on sait les initialiser.


    Ce en quoi, si tu nous disais ce que signifie concrètement ton "ca marche pas", ca serait plus simple d'aider.
    En l'occurence, c'est un crash? des valeurs erronnées, pas de valeurs, un message d'erreur?

    Si ca marche chez ton collègue, c'est a priori qu'il n'a pas exactement la même configuration: une version différente de la bibliothèque standard, du compilateur, des bibliothèques systèmes, de processeur, d'OS, ou que sais-je encore

  3. #3
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    ça sent le heisenbug … il «tombe en marche» chez ton collègue et ne fonctionne pas chez toi. À vue de nez je te dirais bien que c'est un accès illégal à une mémoire que tu n'as pas alloué. Chez ton collègue la valeur aléatoire accédée ne fait pas planter, chez toi ça plante.
    En plus des bons conseils de Leternel, tu peux essayer de passer ton programme par Valgrind ou équivalent, utiliser les address sanitizer si tu compiles avec gcc ou clang …

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    oui c'est un crash. Pur et simple.

    Utiliser un debogger est impossible puisque lui fait tout ce que je demande dans mon programme. toutes les variables sont initialisées.

    Est ce que l'allocation mémoire sur un ordinateur peut être différents selon son modèle et par extension un programme sans crash sur un peut devenir un problème sur un autre?

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Picodev; tu entends quoi par il tombe en marche?

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Pourriez vous me donner une solution pour visualiser ce problème de mémoire avec code block sous windows. J'ai fait des recherches mais ce n'est pas très varié pour le débogage mémoire.

    Merci

  7. #7
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    (désolé de te suivre hihi)

    Utilise Dr Memory sur windows !

    Les paramètres à lui donner :
    drmemory.exe -show_reachable c:/dossier/mon_executable.exe param1 param2
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Citation Envoyé par nysay27 Voir le message
    Picodev; tu entends quoi par il tombe en marche?
    C'est un coup de chance s'il fonctionne … un peu le contraire de tomber en panne ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Code::Blocks] Erreur fonction résultat
    Par Lastshadow dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 24/01/2012, 21h31
  2. Réponses: 3
    Dernier message: 10/05/2011, 21h01
  3. Réponses: 7
    Dernier message: 28/04/2011, 17h52
  4. Mon code fonctionne en mode debug et pas en release
    Par teddyalbina dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 22/02/2011, 00h16
  5. Réponses: 13
    Dernier message: 22/10/2010, 23h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo