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 :

[Debug] Erreur _CtrIsValidHeapPointer(pUserData)


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut [Debug] Erreur _CtrIsValidHeapPointer(pUserData)
    Bonjour,

    Nouveau venu dans l'environnement Visual C++ 2005 je suis confronté à un problème lors du lancement de mon appli en mode Debug.
    Le message erreur au lancement est le suivant
    Debug Assertion Failed
    dbgheap.c line 1414
    _CtrIsValidHeapPointer(pUserData)

    Si je persite gros plantage à l'exécution.

    J'ai réduit au maximum mon projet pour faire un test, code complet ci-dessous.
    En fait le problème ne semble pas directement venir de mon appli (qui marche parfaitement en mode Release) mais peut-être des #include et des options de compil.
    Tout le souci vient quand j'ajoute la ligne :
    #include <afxwin.h> dans le stdafx.h
    avec utilisation des standards lib MFC et comme option de compil /clr pour un projet d'origine Windows Forms.

    Peut-être n'est ce pas les bonnes options, mais je n'ai rien trouvé d'autre pour, à la fois utiliser des Forms, les constantes et déclarations windows et des appels à des fonctions de la registry et les MFC.

    Si quelqu'un a une idée ou une solution, merci par avance.
    J'ai déja fait plusieurs changements sans succés et un tour rapide sur le net ne m'a pas fourni de solution.

    Mon code complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    / Testdebug.cpp : main project file.
    #include "stdafx.h"
    using namespace System;
    using namespace System::Windows::Forms;
    int main(void)
    {
    	MessageBox::Show( "Lancement de TestDebug",  "",
    					MessageBoxButtons::OK, MessageBoxIcon::Exclamation  );
    	return 0;
    }
    avec comme stdafx.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #pragma once
    #define WINVER 0x0501
    #define _AFXDLL
    #include <afxwin.h>
    Merci par avance.

    A+


  2. #2
    Expert confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Corruption du tas. Ces varifications ne sont effectuées qu'en debug, d'où pas de signalement d'erreur en release, ce qui ne veut pas dire pas d'erreur.
    Remonte la pile des appels pour localiser le delete / free qui détecte l'erreur.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    Bonsoir et merci de t'interresser à mon problème.

    En fait si j'ai bien compris ce que tu me suggères ,
    je n'ai malheureusement pas accès à beaucoup d'info, l'application plante assez rapidement (avant même d'entrer dans mon code) et je ne vois jamais (ou je ne sais peut-être pas faire) la pile des appels.
    Les seules infos dont je dispose sont celles de l'output qui se termine par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ...
    'TstDebug.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll', No symbols loaded.
    First-chance exception at 0x7c97cc82 in TstDebug.exe: 0xC0000005: Access violation reading location 0xd85c9f62.
    First-chance exception at 0x10210c27 (msvcr80d.dll) in TstDebug.exe: 0xC0000005: Access violation reading location 0xd85c9f77.
    'TstDebug.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_fr_b77a5c561934e089\mscorlib.resources.dll', No symbols loaded.
    A first chance exception of type 'System.AccessViolationException' occurred in TstDebug.exe
    A first chance exception of type '<CrtImplementationDetails>.ModuleLoadException' occurred in msvcm80d.dll
    First-chance exception at 0x7c81eb33 in TstDebug.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    An unhandled exception of type 'System.TypeInitializationException' occurred in Unknown Module.
     
    Additional information: Une exception a été levée par l'initialiseur de type pour '<Module>'.
     
    The thread 'Win32 Thread' (0x254) has exited with code 0 (0x0).
    The thread 'Win32 Thread' (0x100) has exited with code 0 (0x0).
    The program '[3348] TstDebug.exe: Managed' has exited with code 0 (0x0).
    The program '[3348] TstDebug.exe: Native' has exited with code 0 (0x0).
    Mais je dois avouer que pour moi c'est un peu abstrait comme info.
    Si tu peux m'en dire plus ?
    Est-ce que ce problème pourrait être du à une incompatibilité dans mes otions de compil ?

    Merci encore.

    A+

  4. #4
    Expert confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Et un main() vide ça plante aussi ?

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    Et un main() vide ça plante aussi ?
    Oui, même résultat.

    A+

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    Bonjour,

    J'ai enfin pu résoudre mon problème grace à une réponse sur un autre forum.
    Pour en faire profiter tous le monde voici la solution à appliquer aux options de compilation/link du mode Debug

    Linker =>
    ***System =>
    ******SubSystem =>"Not Set" // avant il y avait Windows
    ***Advanced=>
    ******Entry Point => "" // avant il y avait main
    Au lancement ça ouvre une fenêtre Command et ensuite ça marche nickel même avec des projets plus compliqués que l'exemple donné pour test.

    Merci a tous ceux qui m'ont aidé.

    A+

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

Discussions similaires

  1. [debug] erreur que je ne comprend pas
    Par PoZZyX dans le forum Java ME
    Réponses: 4
    Dernier message: 11/07/2006, 08h05
  2. Réponses: 2
    Dernier message: 27/03/2006, 17h18
  3. [debug VBA]Message erreur 2499 seulement en mode debug
    Par manujuggler dans le forum Access
    Réponses: 4
    Dernier message: 05/01/2006, 22h17
  4. [Debug] [Trigger] erreur d'exe pas très précise
    Par viena dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2005, 11h36
  5. Debug noyeau 2.6.3 bzImage erreur
    Par jean christophe dans le forum Administration système
    Réponses: 4
    Dernier message: 16/01/2005, 15h52

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