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

MFC Discussion :

Unknown software exception & mémoire ne peut pas etre &q


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Unknown software exception & mémoire ne peut pas etre &q
    Bonjour,
    Je suis en train de développer une application MFC avec VC++ et je me heurte actuellement à un problème des plus tracassant ....
    Lorsque m'on application est lancée, quand je désire ouvrir une fenetre CDialog en faisant un DoModal j'obtiens d'abords l'erreur :

    "Erreur d'exception unknown software exception(0xc0000094) dans l'application à la position 0x00400e410".
    Ok pour fermer l'appli
    Annuler pour debug

    *Annuler provoque l'ouverture de vc++ en debug avec le code en assembleur et un message "Unhandled exception in toto.exe : 0xc0000094 : integer divide by zero."
    L'instruction pointée est "idiv eax,ecx" avec eax et ecx à 0 (tiens ! ...).

    *Ok fait apparaitre un autre message:
    "L'instruction à "0x6c2c5115" emploie l'adresse mémoire "0x00000004" la mémoire ne peut pas etre "read. Ok pour fermer l'appli"

    Comme je l'ai introduis avant, j'ai localisé l'erreur, dans mon code C++, au moment de l'exécution de l'instruction "CDialog:oModal();".
    Pour plus de précision : j'ai la classe CResizableDialog qui hérite de CDialog et la classe CMemMapDlg qui hérite de CResizableDialog.
    Le code de départ est:
    CMemMapDlg dlg;
    dlg.DoModal();

    Autre point intéressant je pense, je n'ai aucun soucis en debug, ce n'est que la release qui plante.

    Voilà voilà si qqn sait comment résoudre ou du moins contourner ce problème, je lui en serai très reconnaissant.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 681
    Points
    10 681
    Billets dans le blog
    3
    Par défaut
    Dans le débogueur, une fois le code asm visible, peux-tu remonter la pile des appels jusque dans ton code ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Si j'ai bien compris ta question, non.
    Voilà ce que j'ai :



  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Bonjour

    Dans ton debugger quand tu es en asm, tu es dans la fenetre variable et tu trouveras une liste déroulante avec "contexte" ecrit devant.
    Dans cette liste tu seras capable de remonter a la ligne de code qui fait l'erreur dans ton code
    cordialement

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Si tu a une division par zéro ça ne devrait pas être trop dur à trouver
    C’est dans ton code pas celui des MFC .
    Donc je dirais vérifie si tes variables sont initialisées correctement et les opérations arithmétique dessus.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 681
    Points
    10 681
    Billets dans le blog
    3
    Par défaut
    Dans les options de compilation en release, active la génération des symboles de débogage, tu devrais alors avoir une call stack + explicite.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Lol, j'ai pensé à vérifier les divisions par 0 mais je n'ai rien trouvé de tel. Je vais de toute façon vérifier de nouveau.

    Sinon, grace à vos conseils j'obtiens une call stack plus explicite :



    Si j'ai bien compris le tour de magie, c'est dans "CMemMapDlg::OnInitDialog(void)" que ca coince alors ?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 681
    Points
    10 681
    Billets dans le blog
    3
    Par défaut
    Plutôt dans CPPDumpCtrl::SetVisibleAddress, avant l'appel à GetNotify. Mais peut être que c'est à cause de mauvais paramètres transmis en amont (SetSelectRange...).

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Oui j'avais encore mal compris, oups ...
    L'erreur était dans setVisibleAddress. C'était bien une division par 0 .... qui en doutait ? ... Moi.
    Merci pour tout !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/01/2009, 09h50
  2. la mémoire ne peut pas être "written"
    Par zouzou1949 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2006, 14h16
  3. Mémoire ne peut pas être read
    Par tedparker dans le forum Access
    Réponses: 4
    Dernier message: 27/09/2006, 11h54
  4. Liens URL : La mémoire ne peut pas être "read" ?
    Par fredfred dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/07/2006, 08h48
  5. mémoire peut pas etre "read"
    Par zhoom dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 11h56

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