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

C++ Discussion :

Plantage du .exe et pas dans l'IDE


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Plantage du .exe et pas dans l'IDE
    Bonjour à tous,

    Lorsque j'éxécute mon programme sous visual, que ce soit en Debug ou Release, tout ce passe bien.
    J'ai par contre un plantage lorsque j'éxécute le .exe en dehors de l'IDE.

    J'ai bien-entendu essayé de chercher l'erreur à cout d'affichage de MessageBox un peu partout. Je pense avoir isolé le probleme au niveau d'un de mes algos mais ça a quand meme l'air d'être assez aléatoire (ie ça plante pas au meme endroit à chaque fois).

    Est ce qu'il y a des cas de figures ou ce genre de choses peut se produire ?
    Est-il possible de débuguer mon .exe sachant que j'ai le source ?
    Je suis un peu perdu là.

    Merci par avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Ca peut être simplement une histoire de répertoire courant ou de variable d'environnement différents...

    Autrement, pour debugger, tu peux lancer ton programme depuis une ligne de commande, puis t'accrocher dessus avec l'environnement de développement (éventuellement après avoir mis une pause si le programme plante trop vite pour que tu aies le temps de t'accrocher).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci JoyLoic. Je ne comprend pas le "puis t'accrocher dessus avec l'environnement de développement".

    Comment je "greffe" Visual à mon exe ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut

    Dans le menu "Debug", il y a une entrée "Attach to process". Une liste des *.exe en cours d'exécution apparaît. Tu sélectionnes le tien et tu cliques sur "Attach". Le débuggueur va se greffer sur l'exe.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ok merci jblecanard.
    Bon ça ne m'apprend rien de particulier en fait "Exception non gérée blabla".

    J'arrive à faire tourner mon exe quand il est compilé en debug mais il plante tjs quand il a été compilé en release.

    Du coup je en pense pas que ça vienne d'un quelconque probleme de chemin/variable d'env.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par azboul Voir le message
    Ok merci jblecanard.
    Bon ça ne m'apprend rien de particulier en fait "Exception non gérée blabla".
    Dis nous en plus ! De quelle exception s'agit-il ? Par défaut, le débuggueur ne s'arrête pas sur toutes les exceptions, mais on peut le configurer pour qu'il s'arrête sur certaines précisément. Ainsi, tu verras d'où est ce qu'elle provient dans le code.

  7. #7
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Bonjour,

    Citation Envoyé par azboul Voir le message
    J'arrive à faire tourner mon exe quand il est compilé en debug mais il plante tjs quand il a été compilé en release.
    Tu gères comment ta mémoire ?
    Tu alloues de la mémoire à la main (pointeurs, tableaux) ?
    Souvent les erreurs d'allocation mémoire induisent des comportement très différents en release et en débug.

    La raison en est que si on lit ou on écrit au hasard en mémoire, on a une chance de lire ou d'écrire un case mémoire que ton programme n'a pas reservée.
    Or en Debug, ton programme réserve beaucoup plus de mémoire pour tout un tas de choses, donc tu as plus de chance de tomber sur une case mémoire que ton programme a réservé, mais qui ne sert pas une fonction vitale du programme (et donc tu ne vois pas que tu es en train de faire n'importe quoi).

    [EDIT]
    Je me rend compte que c'est pas clair.
    Si tu écris à l'adresse d'un pointeur ou dans un tableau :
    • Cas normal : tu as, au préalable, réservé cet espace pour ton pointeur ou ton tableau (ou pas assez), ya pas de problème
    • Cas anormal 1 : tu n'as pas réservé d'espace pour ton pointeur ou ton tableau. Donc tu écris n'importe où en mémoire. Mais tu as de la chance, le n'importe où en question se trouve être un emplacement que ton programme a réservé pour autre chose, c'est un problème mais tu ne le vois pas forcément. Surtout si le autre chose en question n'est pas (ou plus) directement utile au déroulement de ton programme.
    • Cas anormal 2 : tu n'as pas réservé d'espace pour ton pointeur ou ton tableau. Donc tu écris n'importe où en mémoire. Mais tu n'as pas de chance, le n'importe où en question se trouve être un emplacement que ton programme n'a pas réservé pour autre chose. Ton programme crashe avec un joli Segfault.

    Du coup, comme la mémoire réservée par ton programme est très différente en release et en debug, le symptome est parfois très différents.

    J'espère que c'est plus clair
    [/EDIT]

    Cela dit :
    Dis nous en plus ! De quelle exception s'agit-il ?
    +1

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2011, 10h26
  2. mon .exe ne marche pas dans d'autre pc
    Par delhac_86 dans le forum C++Builder
    Réponses: 3
    Dernier message: 03/02/2007, 19h04
  3. Réponses: 1
    Dernier message: 08/11/2005, 09h03
  4. Pas de liste "A Faire" dans l'IDE de BCB5
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/08/2003, 13h57
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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