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 :

Debugging vc++


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut Debugging vc++
    Chalut

    j'ai une pitite question toute b�te:

    en cas de crash d'un soft apparait une pitite dlgbox system indiquant l'adresse hexa de l'instruction provoquant le crash, ainsi que, dans le cas d'un bufferoverflow par exemple, l'adresse memoire que le soft a tent� d'acc�der.

    Comment, a partir de l'adresse de l'instruction, retrouver l'instruction dans le code source ?

    ex: crash
    l'instruction 0xAABBCCDD a provoqu� une erreur a l'adresse 0xEEEEEEEE
    memory can't be read/written

    J'aimerais savoir comment retrouver, dans le code source, l'instruction qui se trouve a l'adresse 0xAABBCCDD du binaire, pour ensuite tracer les appels a cette instruction via la call stack.

    vi, j'ai honte de pas trouver ca, mais cet IDE je pige pas encore la logique..

    Merci

  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
    J'esp�re que c'est pas pour d�buguer un soft qui plante chez un client, auquel cas tu d�couvres l'utilit� de g�n�rer un fichier de logs.
    Sinon, ben on se demande pourquoi tu n'utilises pas un d�bogueur.
    Mais bon, pour ta question, il faut d�ssassembler le soft pour savoir l'instruction (assembleur) pr�cise, mais alors tu ne sais pas dans quelle fonction �a se passe, et tu peux oublier le callstack.
    Alors la m�thode du guerrier d�sesp�r�, c'est de compiler le soft en faisant g�n�rer un .map. Ce dernier te donnera l'emplacement de chaque fonction dans ton exe. Tu peux alors en d�duire dans laquelle a eu lieu l'erreur.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut
    Citation Envoy� par Aurelien.Regat-Barrel
    J'esp�re que c'est pas pour d�buguer un soft qui plante chez un client, auquel cas tu d�couvres l'utilit� de g�n�rer un fichier de logs.
    hihi non en fait, je debug une appli opensource (env 100,000 lc, pas assez de temps pour tout lire) � laquelle j'ai ajout� quelques �l�ments de code. Probl�me: l'ajout se fait dans une dll multithread qui utilise des sockets. Donc, non seulement c'est gal�re de placer les points d'arret a cause des timeout r�seau, mais en plus je ne suis jamais trop sur du thread ex�cutant mon code.
    Bref

    Citation Envoy� par Aurelien.Regat-Barrel
    Sinon, ben on se demande pourquoi tu n'utilises pas un d�bogueur.
    En fait, c'est ce que j'essaie de faire avec celui inclus dans visual .net
    Donc, j'attache mon process, je provoque le crash, puis j'obtient la boite de dialogue decrite dans le premier post. Le debug visual pointe alors sur l' ASSERT qui a provoqu� l'arret de lexec dans le code de l'ex�cutable. Mais l'info dont j'ai besoin, c'est l'instruction qui a provoqu� le bo dans la dll.. pas celle de l'assert de l'ex� qui l'a intercept�.

    Jsuis pas sur d'etre bien clair, inutile de pr�ciser que je suis pas vraiment dev

    Citation Envoy� par Aurelien.Regat-Barrel
    Mais bon, pour ta question, il faut d�ssassembler le soft pour savoir l'instruction (assembleur) pr�cise, mais alors tu ne sais pas dans quelle fonction �a se passe, et tu peux oublier le callstack.
    Alors la m�thode du guerrier d�sesp�r�, c'est de compiler le soft en faisant g�n�rer un .map. Ce dernier te donnera l'emplacement de chaque fonction dans ton exe. Tu peux alors en d�duire dans laquelle a eu lieu l'erreur.
    Comment g�n�rer le fichier .map ? Suffit de compiler la dll en mode debug ? ou ya des options � activer qu�quepart dans l'IDE ? Ya un tuto debug avec visualc++ sur developpez.com ?

  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
    C'est l'ASSERT qui g�n�re l'erreur. Cherche pas plus loin. C'est lui l'instruction, un assert sert � �a.
    Remonte la pile des appels dans le d�bogueur pour comprendre pourquoi �a a fini comme �a. A vu de nez, �a sent la corruption m�moire... c'est quoi comme assert ? Si c'est invalid block ou truc du genre, v�rifie tes new/delete, que tu m�langes pas plusieurs CRT.
    Pour le map, c'est dans les options du projet, �diteur de liens -> d�bogage -> g�n�ration d'un fichier de mappage.
    Mais apprends � utiliser le d�bogueur tu seras 100x plus efficace.
    Si ta dll est compil�e en debug, tu dois pouvoir "stepper into" dedans, notamment lors de la remont�e de la pile d'appels.

  5. #5
    mat.M
    Invit�(e)
    Par d�faut
    hihi non Smile en fait, je debug une appli opensource (env 100,000 lc, pas assez de temps pour tout lire)
    Pas le temps pour tout lire ??
    Tu prends pas les gens pour des idiots ?
    J'esp�re que tu n'est pas r�mun�r� pour cela
    Tu traces dans un fichier log comme Aur�lien sugg�re ?

Discussions similaires

  1. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    R�ponses: 3
    Dernier message: 15/01/2004, 19h47
  2. R�ponses: 2
    Dernier message: 28/10/2003, 10h55
  3. Doc sur Debug de Ms-Dos
    Par gtr dans le forum Assembleur
    R�ponses: 13
    Dernier message: 23/09/2003, 09h06
  4. [debug] performances / optimisation
    Par tmonjalo dans le forum C
    R�ponses: 2
    Dernier message: 28/07/2003, 23h45
  5. [debug] fuites m�moires
    Par tmonjalo dans le forum C
    R�ponses: 3
    Dernier message: 28/07/2003, 17h20

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