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 :

[Débutant]Problème en mode Debug Seulement


Sujet :

C++

  1. #21
    screetch
    Invité(e)
    Par défaut
    hmm oui c'est normal car je pense que la ligne que je t'ai donné desactive le check (donc l'erreur n'a pas ete corrigée, elel a juste été desactivée), utilise plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _crtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF);

  2. #22
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Citation Envoyé par screetch Voir le message
    hmm oui c'est normal car je pense que la ligne que je t'ai donné desactive le check (donc l'erreur n'a pas ete corrigée, elel a juste été desactivée), utilise plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _crtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF);
    j'ai rien eu !!!!

  3. #23
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    bonjour,
    Voila ce que j'ai dans pile des appels

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     	ntdll.dll!7c911230() 	
     	ntdll.dll!7c96db9c() 	
     	ntdll.dll!7c97c45d() 	
     	ntdll.dll!7c97d098() 	
     	ntdll.dll!7c970ae7() 	
     	kernel32.dll!7c85e9cf() 	
     	BackGround_ForeGround.exe!_heapchk()  Ligne 104 + 0x10	C
     	BackGround_ForeGround.exe!_CrtCheckMemory()  Ligne 1500 + 0x5	C
     	BackGround_ForeGround.exe!_free_dbg_lk(void * pUserData=0x369fcd80, int nBlockUse=1)  Ligne 1100 + 0x5	C
     	BackGround_ForeGround.exe!_free_dbg(void * pUserData=0x369fcd80, int nBlockUse=1)  Ligne 1070 + 0xd	C
     	BackGround_ForeGround.exe!operator delete(void * p=0x369fcd80)  Ligne 365 + 0xb	C++
     	BackGround_ForeGround.exe!std::allocator<std::_List_nod<double,std::allocator<double> >::_Node>::deallocate(std::_List_nod<double,std::allocator<double> >::_Node * _Ptr=0x369fcd80, unsigned int __formal=1)  Ligne 122 + 0x9	C++
     	BackGround_ForeGround.exe!std::list<double,std::allocator<double> >::erase(std::list<double,std::allocator<double> >::iterator _Where={...})  Ligne 588	C++
     	BackGround_ForeGround.exe!std::list<double,std::allocator<double> >::erase(std::list<double,std::allocator<double> >::iterator _First={...}, std::list<double,std::allocator<double> >::iterator _Last={...})  Ligne 596 + 0x23	C++
     	BackGround_ForeGround.exe!std::list<double,std::allocator<double> >::_Tidy()  Ligne 878	C++
     	BackGround_ForeGround.exe!std::list<double,std::allocator<double> >::~list<double,std::allocator<double> >()  Ligne 361	C++
     	BackGround_ForeGround.exe!CTelemetre::Calcul_Vitesse(CVehicule * traj=0x10710d88, int c1=106, int c2=107)  Ligne 1339 + 0x36	C++
     	BackGround_ForeGround.exe!CTelemetre::Ecriture_Fichier_Trajectoire(ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > > fichier_resultat={...})  Ligne 1448 + 0x3f	C++
    >	BackGround_ForeGround.exe!CTelemetre::Go()  Ligne 421	C++
     	BackGround_ForeGround.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x10117dc0, unsigned int nID=4, int nCode=0, void (void)* pfn=0x004b4136, void * pExtra=0x00000000, unsigned int nSig=53, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Ligne 89	C++
     	BackGround_ForeGround.exe!CCmdTarget::OnCmdMsg(unsigned int nID=4, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Ligne 396 + 0x27	C++
     	BackGround_ForeGround.exe!CDialog::OnCmdMsg(unsigned int nID=4, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000)  Ligne 88 + 0x18	C++
     	BackGround_ForeGround.exe!CWnd::OnCommand(unsigned int wParam=4, long lParam=525630)  Ligne 2542	C++
     	BackGround_ForeGround.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=4, long lParam=525630, long * pResult=0x0012f38c)  Ligne 1751 + 0x1c	C++
     	BackGround_ForeGround.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=4, long lParam=525630)  Ligne 1737 + 0x1e	C++
     	BackGround_ForeGround.exe!AfxCallWndProc(CWnd * pWnd=0x10117dc0, HWND__ * hWnd=0x001e04ac, unsigned int nMsg=273, unsigned int wParam=4, long lParam=525630)  Ligne 241 + 0x1a	C++
     	BackGround_ForeGround.exe!AfxWndProc(HWND__ * hWnd=0x001e04ac, unsigned int nMsg=273, unsigned int wParam=4, long lParam=525630)  Ligne 387	C++
     	user32.dll!7e398724() 	
     	user32.dll!7e398806() 	
     	user32.dll!7e39b88b() 	
     	user32.dll!7e39b8f3() 	
     	user32.dll!7e3cfe95() 	
     	user32.dll!7e3c658d() 	
     	user32.dll!7e3a783f() 	
     	user32.dll!7e3bb06a() 	
     	user32.dll!7e398724() 	
     	user32.dll!7e398806() 	
     	user32.dll!7e39c623() 	
     	user32.dll!7e39e8e5() 	
     	BackGround_ForeGround.exe!CWnd::DefWindowProcA(unsigned int nMsg=514, unsigned int wParam=0, long lParam=589887)  Ligne 1022 + 0x20	C++
     	BackGround_ForeGround.exe!CWnd::WindowProc(unsigned int message=514, unsigned int wParam=0, long lParam=589887)  Ligne 1738 + 0x1a	C++
     	BackGround_ForeGround.exe!AfxCallWndProc(CWnd * pWnd=0x1fd09af8, HWND__ * hWnd=0x0008053e, unsigned int nMsg=514, unsigned int wParam=0, long lParam=589887)  Ligne 241 + 0x1a	C++
     	BackGround_ForeGround.exe!AfxWndProc(HWND__ * hWnd=0x0008053e, unsigned int nMsg=514, unsigned int wParam=0, long lParam=589887)  Ligne 387	C++
     	user32.dll!7e398724() 	
     	user32.dll!7e398806() 	
     	user32.dll!7e3989bd() 	
     	user32.dll!7e398a00() 	
     	user32.dll!7e3ae0a7() 	
     	user32.dll!7e3bc6bb() 	
     	BackGround_ForeGround.exe!CWnd::IsDialogMessageA(tagMSG * lpMsg=0x0015f840)  Ligne 200	C++
     	BackGround_ForeGround.exe!CWnd::PreTranslateInput(tagMSG * lpMsg=0x0015f840)  Ligne 4505	C++
     	BackGround_ForeGround.exe!CDialog::PreTranslateMessage(tagMSG * pMsg=0x0015f840)  Ligne 83	C++
     	BackGround_ForeGround.exe!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x00520342, tagMSG * pMsg=0x0015f840)  Ligne 3121 + 0x12	C++
     	BackGround_ForeGround.exe!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x0015f840)  Ligne 238 + 0x12	C++
     	BackGround_ForeGround.exe!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x0015f840)  Ligne 795 + 0x9	C++
     	BackGround_ForeGround.exe!AfxPreTranslateMessage(tagMSG * pMsg=0x0015f840)  Ligne 257 + 0xf	C++
     	BackGround_ForeGround.exe!AfxInternalPumpMessage()  Ligne 183 + 0x18	C++
     	BackGround_ForeGround.exe!CWinThread::PumpMessage()  Ligne 916	C++
     	BackGround_ForeGround.exe!AfxPumpMessage()  Ligne 195 + 0xb	C++
     	BackGround_ForeGround.exe!CWnd::RunModalLoop(unsigned long dwFlags=4)  Ligne 4559 + 0x5	C++
     	BackGround_ForeGround.exe!CDialog::DoModal()  Ligne 533 + 0xc	C++
     	BackGround_ForeGround.exe!CBackGround_ForeGroundApp::InitInstance()  Ligne 133 + 0xb	C++
     	BackGround_ForeGround.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151ef3, int nCmdShow=1)  Ligne 39 + 0xb	C++
     	BackGround_ForeGround.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151ef3, int nCmdShow=1)  Ligne 25	C++
     	BackGround_ForeGround.exe!WinMainCRTStartup()  Ligne 251 + 0x32	C
     	kernel32.dll!7c816fd7()

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 403
    Par défaut
    OK, on voit donc que l'erreur est mise en évidence à la fin de ta fonction CTelemetre::Calcul_Vitesse().
    Si tu ajoutes le contenu complet de la sortie du debugger, on aura une idée de l'erreur mémoire exacte, mais il est probable que ce soit "Damage after memory block etc.", indiquant un débordement de buffer dynamique dans ta fonction.

    Pourrais-tu poster le code de ta fonction Calcul_Vitesse() ?
    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.

  5. #25
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    OK, on voit donc que l'erreur est mise en évidence à la fin de ta fonction CTelemetre::Calcul_Vitesse().
    Si tu ajoutes le contenu complet de la sortie du debugger, on aura une idée de l'erreur mémoire exacte, mais il est probable que ce soit "Damage after memory block etc.", indiquant un débordement de buffer dynamique dans ta fonction.

    Pourrais-tu poster le code de ta fonction Calcul_Vitesse() ?

  6. #26
    screetch
    Invité(e)
    Par défaut
    cela se produit entre le debut et la fin de ta fonction puisque ta liste est allouée au debut et desallouée a la fin

    insere des appels a _CrtCheckMemory() un peu partout;

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    double CTelemetre::Calcul_Vitesse(CVehicule* traj, int c1, int c2)
    {
    	list<double> dist;
    	double toto;
     
    	for (int i=0;i<min(traj[c1].Nbre_Pt_vert,traj[c2].Nbre_Pt_vert);i++)
    	{
    		toto=sqrt(pow(traj[c1].Pt_vert[i][0]-traj[c2].Pt_vert[i][0],2)+pow(traj[c1].Pt_vert[i][1]-traj[c2].Pt_vert[i][1],2));
    		dist.push_back(toto);
    		assert(_CrtCheckMemory());
    	}
     
    	std::list<double>::iterator iter;
     
    	iter = dist.begin();
    	string u = "";
    	for( ; iter != dist.end(); iter++ )
    	{
    		assert(_CrtCheckMemory());
    		CString s = "";
    		s.Format("%f ",(*iter));
    		u += s;
    	}
    	assert(_CrtCheckMemory());
     
     
    	dist.sort();
     
    	assert(_CrtCheckMemory());
    iter = dist.begin();
     
    	int m=0, n=0;
    	double dist_cumul = 0;
    	string t = "";
    	for( ; iter != dist.end(); iter++ )
    	{
    		assert(_CrtCheckMemory());
    		if (m<0.8*dist.size())
    			{
    				dist_cumul += *iter;
    				CString s = "";
    				s.Format("%f ",(*iter));
    				//t += s;
    				n++;
    				m++;
    			} 
    		assert(_CrtCheckMemory());
    	}
     
    	assert(_CrtCheckMemory());
    	double Te = traj[c1].Te;
    	double vitesse =0;
    	if (n*Te != 0)
    		vitesse = dist_cumul/(n*Te);
    	assert(_CrtCheckMemory());
     
    	return vitesse;
     
    }

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 403
    Par défaut
    Et aussi, tu devrais déclarer traj en pointeur const, puisque tu ne modifies pas les éléments pointés.
    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.

  8. #28
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Et aussi, tu devrais déclarer traj en pointeur const, puisque tu ne modifies pas les éléments pointés.
    bonjour
    c fait mais ça change rien!!

  9. #29
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Citation Envoyé par screetch Voir le message
    cela se produit entre le debut et la fin de ta fonction puisque ta liste est allouée au debut et desallouée a la fin

    insere des appels a _CrtCheckMemory() un peu partout;

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    double CTelemetre::Calcul_Vitesse(CVehicule* traj, int c1, int c2)
    {
    	list<double> dist;
    	double toto;
     
    	for (int i=0;i<min(traj[c1].Nbre_Pt_vert,traj[c2].Nbre_Pt_vert);i++)
    	{
    		toto=sqrt(pow(traj[c1].Pt_vert[i][0]-traj[c2].Pt_vert[i][0],2)+pow(traj[c1].Pt_vert[i][1]-traj[c2].Pt_vert[i][1],2));
    		dist.push_back(toto);
    		assert(_CrtCheckMemory());
    	}
     
    	std::list<double>::iterator iter;
     
    	iter = dist.begin();
    	string u = "";
    	for( ; iter != dist.end(); iter++ )
    	{
    		assert(_CrtCheckMemory());
    		CString s = "";
    		s.Format("%f ",(*iter));
    		u += s;
    	}
    	assert(_CrtCheckMemory());
     
     
    	dist.sort();
     
    	assert(_CrtCheckMemory());
    iter = dist.begin();
     
    	int m=0, n=0;
    	double dist_cumul = 0;
    	string t = "";
    	for( ; iter != dist.end(); iter++ )
    	{
    		assert(_CrtCheckMemory());
    		if (m<0.8*dist.size())
    			{
    				dist_cumul += *iter;
    				CString s = "";
    				s.Format("%f ",(*iter));
    				//t += s;
    				n++;
    				m++;
    			} 
    		assert(_CrtCheckMemory());
    	}
     
    	assert(_CrtCheckMemory());
    	double Te = traj[c1].Te;
    	double vitesse =0;
    	if (n*Te != 0)
    		vitesse = dist_cumul/(n*Te);
    	assert(_CrtCheckMemory());
     
    	return vitesse;
     
    }
    j'arrive meme pas à lancer l'appli qd jmets un petit peu partout des assert!!

  10. #30
    screetch
    Invité(e)
    Par défaut
    que veux tu dire par la ???

  11. #31
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    C'est qu'un assert doit faire sauter l'application avant.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. Problème en mode Debug
    Par Dr.id0 dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 21/10/2010, 17h37
  2. Problème Eclipse mode debug boutons désactivés
    Par Tanebisse dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/04/2009, 11h10
  3. Problème en mode Debug Visual Studio-Objet COM
    Par TheBridge dans le forum C#
    Réponses: 5
    Dernier message: 11/09/2008, 00h24
  4. Problèmes en mode Debug
    Par pracede2005 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/05/2007, 17h29
  5. [Débutante] Compréhension programme - mode debug
    Par bolo dans le forum Assembleur
    Réponses: 14
    Dernier message: 07/01/2005, 19h33

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