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

Qt Creator Discussion :

Suivi de variables


Sujet :

Qt Creator

  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 515
    Points : 705
    Points
    705
    Par défaut Suivi de variables
    Bonjour,

    je ne comprends pas comment fonctionne le système de suivi de variables lors d'une séance de débogage. Certaines variables sont données comme <pas dans la portée>
    Pourtant, pour moi elles le sont. Par exemple, je ne peux pas suivre la variable requestId alors que j'avance en pas à pas dans la méthode suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void TestClient::sendRequest(){
        client = new xmlrpc::Client();
        connect(client, SIGNAL(failed( int, int, QString )), this, SLOT(processFault( int, int, QString )) );
        connect(client, SIGNAL(done(int,QVariant)), this, SLOT(processReturnValue(int,QVariant)));
     
     
        client->setHost( ui->lineEditServerIP->text(), ui->lineEditServerPort->text().toInt());
     
        int x= 12;
        requestId = client->request( "appelGardien", x );
     
        delete client;
    }
    Pourtant, requestId est déclarée comme un membre privé de la classe TestClient. Elle est donc bien dans le scope, non?

    Merci pour vos réponses.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Compilez vous bien en debug ? Les optimisations du compilateur en release n'aide pas lors du débogage.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 515
    Points : 705
    Points
    705
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Compilez vous bien en debug ? Les optimisations du compilateur en release n'aide pas lors du débogage.
    Oui. Par ailleurs, je peux parfaitement observer les variables locales.

    Petite précision, je travaille sous Debian, Qt Creator 1.3.1 et Qt 4.6.3
    J'ai fait un test avec un projet minimaliste et là, ça fonctionne. Je dois avoir loupé un truc énorme dans mon projet de départ, mais quoi?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Les variables qui ne sont pas affichées sont soit :
    • inaccessibles dans le bloc courant du code ;
    • aucune information de débogage n'est dans le programme (option -g de GCC)
    • optimisées.


    Testez avec GDB en ligne de commande, vous verrez que vous aurez le même résultat. Il n'y a pas de magie, si ce n'est pas affiché, c'est qu'il ne peux pas.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 515
    Points : 705
    Points
    705
    Par défaut
    • inaccessibles dans le bloc courant du code ;
    Voici la déclaration d ela classe:
    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
    #ifndef TESTCLIENT_H#define TESTCLIENT_H
     
     
    #include <QMainWindow>
    #include <QVariant>
    #include <qxmlrpc/client.h>
     
     
    namespace Ui {
        class TestClient;
    }
     
     
    class TestClient : public QMainWindow {
        Q_OBJECT
    public:
        TestClient(QWidget *parent = 0);
        ~TestClient();
     
     
    protected:
        void changeEvent(QEvent *e);
     
     
    public slots:
        void sendRequest();
     
     
    private slots:
        void processReturnValue( int requestId, QVariant value );
        void processFault( int requestId, int errorCode, QString errorString );
     
     
    private:
        Ui::TestClient *ui;
        xmlrpc::Client* client;
     
     
        int requestId;
     
     
    };
     
     
    #endif // TESTCLIENT_H
    requestId y est bien déclarée et devrait donc être accessible dans une des méthodes de la classe
    • aucune information de débogage n'est dans le programme (option -g de GCC)
    Voici la sortie de compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g++ -o TestQXmlRpcGui main.o testclient.o moc_testclient.o -L/usr/lib -lqxmlrpc -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
    make: quittant le répertoire « /home/iris/xml_rpc/TestQXmlRpcGui »
    ce qui semble normal puisque je suis en debug et pas en release.
    • optimisées.
    Ca ne doit pas être le cas car la méthode suivante utilise cette variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void TestClient::processReturnValue( int id, QVariant value ){
        Q_ASSERT( value.canConvert( QVariant::Int ) );
    
    
        if ( id == requestId)
            ui->labelReponse->setText( "Ok" );
    }

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Votre ligne de compilation n'indique pas si vous avez l'option -g. Je vous conseille de faire un rebuild complet du projet pour être sur que toute la compilation se fait en debug. Si ça ne vas pas, vérifiez que l'option -g est bien présente.

    Sinon, oui dans la théorie, elle devrait s'afficher.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 515
    Points : 705
    Points
    705
    Par défaut
    J'ai déjà effectué un nettoyage puis un rebuilt complet. Quant à la ligne de commande générée, c'est Qt creator qui la construit. Et comme la config est en mode debug et pas release ...

    De plus, suivre l'état des variables locales et poser un point d'arrêt ne pose aucun problème.

Discussions similaires

  1. Type variable suivi de ?
    Par ikeabp dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/12/2011, 15h16
  2. Réponses: 6
    Dernier message: 23/09/2009, 15h47
  3. Suivi d'une variable dans une Jauge
    Par labrute dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 07/05/2008, 23h21
  4. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 09h34

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