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] Debugger des threads


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut [debug] Debugger des threads
    Bonjour à tous,

    je travaille actuellement sur une appli qui comporte 4 threads, et je suis un peu perdu pour débugger tout ça.

    J'aurais donc besoin de conseils pour m'aider. Existe-t-il des outils, des méthodes, des erreurs classiques à éviter, etc. ?

    Merci par avance.

  2. #2
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    c'est un cauchemar de debugger du multithread avec le debugger, il faut mieux utiliser la macro TRACE pour vérifier les variables

  3. #3
    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
    Par défaut
    Citation Envoyé par la drogue c'est mal
    c'est un cauchemar de debugger du multithread avec le debugger, il faut mieux utiliser la macro TRACE pour vérifier les variables
    +1

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Erf, ça ne m'aide pas beaucoup ça

    Mon problème immédiat est le suivant: si je met des breakpoint partout, le comportement du programme est trop modifié (à cause des problèmes de timing/synchronisation), mais je voudrais tout de même pouvoir m'arêter de temps en temps et regarder quels threads tournent et quels threads sont arêtés.

    Une idée?

  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
    Par défaut
    peut etre avec un objet de supervision de thread.
    qui maintient les evenements sur les threads:
    demarrage ,fin ,evenements specifique etc...
    actif uniquement en _DEBUG par exemple.
    la maj etant controlée par un mutex.
    apres tu fais une fonction qui affiche les evenements de cet objet .

  6. #6
    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
    Une petite astuce à 2 balles sous VC++:
    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
     
        /// Donne un nom au thread appelant cette fonction.
        /// Ce nom apparaît dans le débogueur de VC++
        void SetCurrentThreadName( const char * ThreadName )
        {
    #ifdef _MSC_VER // VC++
            typedef struct tagTHREADNAME_INFO
            {
                DWORD dwType; // must be 0x1000
                LPCSTR szName; // pointer to name (in user addr space)
                DWORD dwThreadID; // thread ID (-1=caller thread)
                DWORD dwFlags; // reserved for future use, must be zero
            } THREADNAME_INFO;
     
            THREADNAME_INFO info;
            info.dwType = 0x1000;
            info.szName = ThreadName;
            info.dwThreadID = static_cast<DWORD>( -1 ); // thread courant
            info.dwFlags = 0;
     
            __try
            {
                ::RaiseException( 
                    0x406D1388, 
                    0, 
                    sizeof info / sizeof(DWORD),
                    (DWORD*)&info );
            }
            __except ( EXCEPTION_CONTINUE_EXECUTION )
            {
            }
    #else
            (void)ThreadName; // éviter les warnings
    #endif
        }
    Ainsi tu peux donner un nom à chacun de tes thread dans le débogueur dans la liste des threads. Ca aide un peu...

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut


    C'est bien pratique, en effet

Discussions similaires

  1. [Debug]Donner des noms aux thread lors du débugage
    Par jeje99 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/12/2005, 16h49
  2. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03
  3. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49
  4. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40
  5. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53

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