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

Lazarus Pascal Discussion :

[Débogueur] Obtenir ++ d'infos pendant l'exécution pas à pas - comme Delphi [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Points : 52
    Points
    52
    Par défaut [Débogueur] Obtenir ++ d'infos pendant l'exécution pas à pas - comme Delphi
    Bonjour,

    Savez-vous s'il est est possible d'obtenir des infos de débogage plus précises, pendant l’exécution pas a pas ?

    Je m'explique :

    Lors de l’exécution pas a pas de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // On parcourt tous les éléments cochés dans IHM
    elements_checked := TStringList.Create;
    for i := 0 to TIHM_FORM_FenetrePrincipale.TIHM_Checklistbox1.Items.Count -1 do
    begin
      elements_checked.Add(TIHM_FORM_FenetrePrincipale.TIHM_Checklistbox1.Items[i]);
    end;
    En Delphi (que je n'ai plus / et pas utilisé depuis des années) j'aurais obtenu des infos précises lors du débogage :
    i := 7
    TIHM_Checklistbox1.Items.Count := 18
    TIHM_FORM_FenetrePrincipale.TIHM_Checklistbox1.Items := 'tintin'

    Sous Lazarus, en l’état actuel de mes connaissances je n'obtiens que ceci
    i := 7
    TIHM_Checklistbox1.Items.Count := ... (vagues infos)
    TIHM_FORM_FenetrePrincipale.TIHM_Checklistbox1.Items := ... (vagues infos)

    Je comprendrai qu'il n'y ai pas de solution à mon problème
    A ++

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Vous retrouvez les mêmes principes qu'avec Delphi
    F4 pour exécuter jusqu'au curseur
    F5 pour les points d'arrêt
    F7 pour le débogage pas à pas en profondeur
    F8 pour le débogage pas à pas
    Ctrl+F7 pour évaluer et faire du suivi
    etc, etc.
    Par contre, il faut que le code que vous voulez inspecter soit compilé avec les options idoines.
    Il y a un article sur le wiki à ce sujet : Lazarus debugger setup
    Philippe.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Points : 52
    Points
    52
    Par défaut
    Merci Ph. B. pour votre réponse

    Tout ce que je cherche a faire c'est comme avec Delphi a l'époque ; pendant l’exécution pas à pas avec Lazarus, et lorsque je survole avec la souris une variable pendant le debogage, il me donne la valeur exacte (et non des infos de structure)

    Voici des exemples (j'ai mis en souligné mon pointeur de souris).
    Exemple 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i := 0 to TIHM_FORM_FenetrePrincipale.TIHM_ELEMENTS_Checklistbox.Items.Count -1 do
    Ici Lazarus me donne i=0 , TIHM_ELEMENTS_Checklistbox.Items.Count class has no component count
    Avec Delphi j'aurai obtenu i=0 , TIHM_ELEMENTS_Checklistbox.Items.Count = 28




    Exemple 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while not TIHM_FORM_FenetrePrincipale.TIHM_DB_DbSqliteQuery.EOF do
      begin
        SetLength(elements_in_db,i+1,2);
        elements_in_db[i,0] := TIHM_FORM_FenetrePrincipale.TIHM_DB_DbSqliteQuery.FieldByName('Nom').AsString;
    Avec Delphi j'aurai obtenu elements_in_db = toutes les valeurs du tableau
    elements_in_db[i,0] = valeur de ce tableau
    TIHM_DB_DbSqliteQuery.FieldByName('Nom').AsString = 'tintin'



    Je suis toujours en train de me documenter.
    Mais je ne comprend vraiment pas grand chose

    Je sens que ce post va être compliqué / ou tomber dans les oubliettes

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Points : 69
    Points
    69
    Par défaut
    Bonjour

    Je n'ai pas trouvé non plus, mais pour l'évaluation j'utilise des variables intermédiaires

    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Var intCount : integer;
     
     
    intCount := TIHM_FORM_FenetrePrincipale.TIHM_ELEMENTS_Checklistbox.Items.Count;
     
    for i := 0 to intCount -1 do
    ...
    Je sais que ce n'est pas très élégant, mais cela me permet de contourner le problème, tout du moins partiellement.

    Jazz

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Points : 52
    Points
    52
    Par défaut
    Pas bête le coup des variables intermédiaires

    Je continue à me documenter sur les options de débogage.
    Notamment sur -> Ctrl+F7 pour évaluer et faire du suivi

    Sujet résolu !
    Merci de votre aide à tous les 2.

  6. #6
    Membre averti
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 156
    Points : 331
    Points
    331
    Par défaut
    Bonjour,
    effectivement le debug ce n'est pas le point fort de lazarus. Souvent on n'arrive pas à lire le contenu de propriétés de composants ou les valeurs de structure ou d'objets. Il y a quelques astuces pour pouvoir les lire en passant par des pointeurs (^) mais comme l'indique Jazz77 la solution la plus sûre est de passer par des variables intermédiaires.

    J.P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/11/2014, 16h19
  2. Réponses: 1
    Dernier message: 29/11/2013, 13h32
  3. Obtenir un fichier heapdump pendant l'exécution d'une appli Java
    Par nouknouk dans le forum Général Java
    Réponses: 7
    Dernier message: 14/08/2010, 11h26
  4. [PPT-2000] différence d'exécution mode pas à pas et mode normal
    Par Fred C dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 13/05/2009, 09h14
  5. ça rentre pas dans la boucle pendant l'exécution
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/01/2005, 15h41

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