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 :

Debugger pas très puissant


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Debugger pas très puissant
    Salut,

    Je fais du Java et je dois reprendre un programme fait en Lazarus.
    J'ai des questions concernant le debugger, je suis habitué a Java et le debugger de NetBeans ou Eclipse fonctionne super bien, mais celui de Lazarus c'est autre chose...

    Exemple, j'ai le programme :

    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
     
    var
      gCode: String;
      listGCode: TStringList; 
    ...
    listGCode := TStringList.Create();
    ...
        for j:=0 to lic1.size() - 1 do
        begin
          gCode := lic1.getGCode(j);
          listGCode.add(gCode);
        end;
    ...
        for j:=0 to listGCode.Count - 1 do
        begin
          // GCode
          gCode := listGCode[j]; // Problème ici
          ...
        end;
    Si je mets un breakpoint sur la ligne gCode := listGCode[j]; et que je veux visualiser la donnée listGCode[j] avant l'affectation à gCode le debugger me renvoie :
    listGCode[j] = ???
    Cannot access indexed element in expression [
    Je ne comprends pas car la variable j est bien assignée à 0.
    Il semble que le debugger ne puisse pas évaluer l'élément à la position 0 (ou n).

    Il est possible de paramétrer le debugger pour évaluer les expressions ?
    J'ai installé la version 2.2.0 car il semble que le debugger a été amélioré, mais j'ai toujours le même problème...

    Des idées ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Pas sûr que ce soit l'origine du problème, mais listGCode[j] est un raccourci pour listGCode.Strings[j]. Peut-être qu'en l'écrivant de cette façon ça fonctionnerait ?

    Pour ma part, je n'utilise jamais le débogueur.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Je viens de faire l'essai et c'est pareil.

    Ne pas utiliser le debugger, wjaou, je trouve ça super pratique de faire du pas à pas et voir ce qui se passe

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut,

    si je me souviens bien, il faut faire un clique droit sur la variable puis dans le sous-menu deboguer puis choisir "ajouter un suivi" ou "point d'arrêt de donnée suivie".
    Sinon dans le menu "Voir" -> "Fenêtre de débogage" tu as l'onglet "Variables locales" et d'autres également qui te seront peut-être utile.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Il semble qu'il ne soit pas possible de visualiser un élément dans un Array :

    Nom : LazarusDebug.jpg
Affichages : 301
Taille : 34,5 Ko

    En tout cas, je n'ai toujours pas trouvé.

    Denis

  6. #6
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut Objet de mon ressentiment
    Bonjour,

    Le problème est que ce n'est pas une variable mais une propriété derrière laquelle se cache une méthode (en fait une chaîne d'appels). Le plus simple est de faire, à partir du point d'arrêt, un pas à pas approfondi. C'est un peu laborieux.

    Les objets cachent beaucoup de choses. Qui supposerait qu'une notation tableau permette d'accéder directement à un élément d'une liste dynamique éventuellement triée ?

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par morind79 Voir le message
    Salut,


    Il est possible de paramétrer le debugger pour évaluer les expressions ?
    J'ai installé la version 2.2.0 car il semble que le debugger a été amélioré, mais j'ai toujours le même problème...

    Des idées ?

    Merci
    Bonjour,

    je n'ai aucune idée si le nouveau debugger aiderai sur ce problème, mais ce qui est sur c'est que le "nouveau" debugger n'est pas utilisé par défaut sur un système où Lazarus est déja installé. Dans le cas contraire il faut le changer :

    1. Installer le paquet LazDebuggerFp
    2. Outils -> Options -> Deboggeur -> Backend du Debugger -> "Ajouter"
    3. Nom : "FPDebug internal Dwarf-debugger"
    4. Type de débogueur et chemin : "FPDebug internal Dwarf-debugger"
    5. S'assurer que ce nouveau débogueur est celui sélectionné dans la liste déroulante
    6. OK


    Maintenant le nouveau débogueur est utilisé par défaut. Sources

    Maintenant je n'ai aucune idée si ça sera mieux avec celui-ci !

  8. #8
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Oui, c'est bien les paramètres que j'ai.
    Pour le moment j'utilise l'assignation a une variable pour debugger, mais pas très pratique.

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 937
    Points : 9 249
    Points
    9 249
    Par défaut
    hello,
    voici un exemple de comment utiliser le debugger fpDebug pour inspecter un tableau dans ce code :
    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
    procedure TForm1.Button15Click(Sender: TObject);
    var
      j: integer;
      gCode: String;
      listGCode: TStringList;
    begin
    listGCode := TStringList.Create();
        for j:=0 to 10 do
        begin
          gCode := inttoStr(j);
          listGCode.add(gCode);
        end;
        for j:=0 to listGCode.Count - 1 do
        begin
          // GCode
          gCode := listGCode[j]; // Problème ici
        end;
     
     
    end;
    Nom : LazDebugger.gif
Affichages : 269
Taille : 143,4 Ko

    Selectionner le tableau à inspecter et faire Debug/Inspect. Dans la table présentée double cliquer sur la ligne de la FList pour descendre dans l'arborescence, puis re double cliquer jusqu'à arriver au dernier échelon. On arrive à (listGCode.FList)^
    . Compléter avec l'indice à afficher (exemple j). Dans l'animation à la fin je fais un run dans le programme pour incrémenter j entre chaque point d'arrêt.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. [Debug] [Trigger] erreur d'exe pas très précise
    Par viena dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2005, 12h36
  2. [Timer]Timer pas très précis
    Par harold63 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/07/2005, 09h36
  3. 2 SELECT Qui ne s'entendent pas très bien entre eux :(
    Par moutanakid dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/08/2004, 17h46

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