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

Visual C++ Discussion :

Utiliser le debugger Visual C++ 2008


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par d�faut Utiliser le debugger Visual C++ 2008
    Bonjour � tous,

    J'ai une application qui fonctionne tr�s bien en compilation release mais quand je la lance dans mon debuggueur, j'ai des messages d'erreurs inqui�tants, bien qu'ils n'emp�chent pas le programme de fonctionner:

    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77010000.
    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77020000.
    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77030000.
    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77040000.
    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77050000.
    Exception de premi�re chance � 0x100926f6 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x77060000.
    et ainsi de suite jusqu'� :
    Exception de premi�re chance � 0x01983f15 dans Reader.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x7c7f0000.
    Si je debuggue pas � pas, ces erreurs surviennent toutes lors de l'appel � cette fonction:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    reader.MainWindow=CreateWindowEx(0, "Reader"," Reader", WS_POPUP|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,0,0,0,0,NULL,NULL,hInstance,NULL);
    mais avant le code g�r� au niveau du WM_CREATE.

    Le debuggueur me d�signe cette ligne 105 du fichier malloc.c
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    return HeapAlloc(_crtheap, 0, size ? size : 1);
    Mais comment puis-je savoir ce qui est � corriger dans mon code?

    Merci d'avance

  2. #2
    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

    Il suffit d'attraper l'exception concern�e !

    Tu peux d�j� lire ceci : http://blogs.msdn.com/b/davidklinems...12/438061.aspx

    Ensuite, dans VS, il te suffit d'aller dans Debug -> Exceptions puis de cocher l'exception concern�e, en l'occurence "Access violation", qui est une "WIN32 exception".

    Relance ton programme en mode debug, et le d�bugueur s'arr�tera lorsque l'exception est lanc�e.

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par d�faut
    Citation Envoy� par jblecanard Voir le message
    Relance ton programme en mode debug, et le d�bugueur s'arr�tera lorsque l'exception est lanc�e.
    Salut,

    C'est bien ce que j'ai fait, et justement le debuggueur s'arr�tait dans le fichier malloc.c.
    J'ai finalement compris que ca venait de mes cha�nes de caract�res pass�es au CreateWindow, car en les passant � NULL, le debuggueur passe alors le CreateWindow sans relever d'exception.

    J'en d�duis qu'il n'est pas recommand� de directement passer une cha�ne de cette facon, sans la d�clarer au pr�alable?
    Pourquoi est ce que passer une cha�ne de la sorte entra�ne une allocation dynamique, je pensais que le compilateur transformait ces cha�nes de caract�res en allocation statique?

    Je vais de ce pas chercher de la lecture pour mieux comprendre comment utiliser un debuggueur.

  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

    Une fois le d�bugueur arr�t�, tu peux facilement r�cup�rer plein d'infos :
    - La callstack va te montrer toute la pile d'appel et permet de remonter facilement jusqu'au code concern�
    - Tu peux t'arr�ter sur CreateWindow et faire une ex�cution pas � pas pour voir ce qui se passe.
    - Tu peux poser des watchs pour surveiller les variables dont tu as besoin

    Quant tu ma�triseras un peu tout �a, tu localiseras tr�s vite les probl�mes !

  5. #5
    Membre tr�s actif
    Profil pro
    D�veloppeur ind�pendant
    Inscrit en
    Ao�t 2004
    Messages
    374
    D�tails du profil
    Informations personnelles :
    �ge : 56
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur ind�pendant
    Secteur : Transports

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 374
    Par d�faut pointeur
    toutes tes chaines, meme statiques, sont referenc�es par un pointeur.
    si tu cr�e juste la variable, sans l'initialiser, tu n'as aucune garantie de ce qu'elle va contenir apr�s cr�ation.
    car l'espace m�moire occup� n'et pas nettoy� lors de la creation, sauf si ta variable est par exemple, un CString, qui est un objet avec une procedure d'initialisation..
    donc, initialisation des variables � l'�tat initial obligatoire.
    on peut tout faire en c/c++, mais le revers de la m�daille, c'est qu'il faut tout faire..

Discussions similaires

  1. Pb utilisation Split avec Visual basic 2008 Express
    Par duarep dans le forum VB.NET
    R�ponses: 14
    Dernier message: 26/08/2013, 17h29
  2. comment utilise paradiseo avec visual studio 2008
    Par houamehob dans le forum Visual Studio
    R�ponses: 0
    Dernier message: 25/06/2011, 12h24
  3. R�ponses: 0
    Dernier message: 01/03/2011, 09h32
  4. Probl�me avec le debugger Visual Studio 2008
    Par Zouch-K dans le forum Visual C++
    R�ponses: 2
    Dernier message: 02/04/2010, 14h13
  5. Utilisation dll - visual studio 2008 - c++
    Par >-[]-Fab-[]-< dans le forum Windows
    R�ponses: 9
    Dernier message: 22/05/2008, 15h53

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