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 :

Unhandled Win32 Exception en mode Release


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut Unhandled Win32 Exception en mode Release
    Bonjour,

    Alors voici mon problème : j'ai mon programme qui fonctionne en mode debug, mais comme il s'agit d'un programme de rendu ça irait beaucoup plus vite en mode release donc j'ai essayé et là surprise : ça plante !

    Ci dessous un petit screenshot, il y a plusieurs choses que je ne comprends pas :
    - Pourquoi est-ce que le programme va sur cette ligne alors qu'il y a justement un "if element == NULL" sur la ligne du dessus ?

    - Pourquoi le catch(...) ne fait-il pas son boulot ?

    Et enfin au meme endroit en mode debug : le pointeur element n'est pas NULL est l'exception est bien capturée.
    Et sinon pour le cas ou le node contient bien un attribut "name" ça fonctionne aussi bien en mode release que debug.

    Merci d'avance pour votre aide !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Les valeurs affichées sous le débogueur en mode release, sont en général fausses.
    Parmi les différences classiques debug/release on a entre autres les pointeurs qui sont initialisés à 0 en debug et non en release.

    Sinon un catch( ... ) ne va pas attraper les plantages, qui ne sont pas des exceptions...

    MAT.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    catch(...) n'est pas supposé attrapper les exceptions Win32, seulement les exceptions C++.
    Sur d'anciennes versions de Visual, ça les attapait. Depuis que Visual respecte mieux le standard C++ (mais piétine le standard C), c'est corrigé.

    Pour attrapper les exceptions Win32, il faut utiliser le Structured Exception Handling (SEH).

    PS: Un pointeur peut être invalide sans être NULL, hélas...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    ah ok,
    merci beaucoup pour la vitesse de réponse,
    je vais essayer cela tout de suite

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    Bon, alors j'ai fait des tests, et donc le problème ne vient pas de l'élément (car vous aviez raison, c'est bien un problème du debugger just in time, en réalité il est non nul) donc le problème vient du "Attribute" le problème c'est que c'est une méthode de tinyxml...

    En fait j'ai 9 fichiers différents à parser et celui là est le seul à planter pour la bonne et simple raison que c'est le seul à ne pas avoir d'attribut "name" dans le node "scene", du coup si vous avez une idée de comment tester si un attribut existe ou non avec tinyxml ça règlerait aussi bien mon problème!

    merci d'avance !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    Bon finalement j'ai trouvé...
    C'était le return qui faisait planter,

    le fait de faire return attribute si l'attribute est null il esssaye de faire un string de null et ça plante

    merci à ceux qui m'ont aidé et en espérant que cette boulette serve à d'autres personnes :p

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/05/2012, 10h12
  2. Réponses: 5
    Dernier message: 28/10/2010, 13h01
  3. Exception non catché en mode release
    Par Troopers dans le forum C#
    Réponses: 3
    Dernier message: 06/07/2010, 10h09
  4. an unhandled win32 exception occurred in explorer.exe
    Par perloutta dans le forum Forms
    Réponses: 0
    Dernier message: 13/05/2009, 18h16
  5. An unhandled win32 exception occured in explorer.exe
    Par tamiii dans le forum Windows XP
    Réponses: 5
    Dernier message: 03/06/2008, 22h38

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