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

Delphi .NET Discussion :

[BDS 2006][.NET] Debugger Evaluateur


Sujet :

Delphi .NET

  1. #1
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut [BDS 2006][.NET] Debugger Evaluateur
    Bonjour tout le monde;

    Je débute une mission sous Delphi 2006 NotNet, je suis un habitué de toutes les versions de Delphi Win32 jusqu'à Code Gear 2007.

    Mais là je me trouve confronté à un problème que je n'avais pas dans les autres versions sur lesquelles j'ai toujours bossé.

    En effet, lorsque je veux évaluer une chaîne (par exemple) ayant une taille supérieure de 1000 char, et bien l'évaluateur de Delphi en debug tronque cette chaine à 512 caractères.

    Avez-vous eu le même problème sous BDS 2006 .NET ? J'ai refais des tests sous 2007 ou delphi 5 pensant que je devenais fou et que ca avait toujours été ainsi mais non l'évaluateur ne me tronquait pas mes longues chaines de caractères.

    Avez-vous des solutions pratiques SVP ?

    Merci
    Greg

  2. #2
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Me revoilà pour un petit update.

    En fait il semblerait que l'évaluation fonctionne pour une variable locale mais pour le résultat d'une fonction GetText par exemple, le résultat est tronqué à 512 caractères :-(

    donc toujours pas de solution pour le moment.

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    as-tu consulté le site de bug de Borland ?
    L'affichage primaire en tant que tableau puis string est-il possible ?

  4. #4
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Bonjour,

    Oui j'ai regardé le Quality Center de Borland et CodeGear (ce sont les mêmes de toute façon ) et il y a des bugs de rapportés mais sur le fait que l'évaluation de chaînes assez longues fait planter le debugger et l'IDE tout entier.

    Rien pour mon cas, par contre j'avais trouvé un sujet se rapportant exactement à mon problème mais sous Delphi 8 et il y avait eu un patch pour corriger ce problème.

    Laurent as-tu le même problème ou pas du tout ?

    Par contre je ne comprends pas ta dernière phrase: "affichage primaire puis string" ? Sous forme de tableau (maString[..]), je peux accéder à n'importe quel caractère de ma chaîne, et lorsque j'ajoute ma variable dans le suivi, de toute façon ma chaîne est là aussi tronquée à 512 car donc impossible de faire un copier/coller là non plus (précision, lorsque j'évalue le longueur de ma chaine (length(MyString) j'ai bien la bonne longueur et pas 512) .

    Sinon, autre question, en WIN32 on pouvait accéder directement à l'emplacement mémoire d'un objet, chaîne, ... par l'adresse mémoire correspondante via le module CPU, sous Delphi .NET il n'y a plus du tout moyen de voir en mémoire le contenu d'une chaîne par exemple ?

    Toujours en recherhe d'infos, j'ai ajouté un bug report sur le site de Code Gear, je vais bien voir si il va être pris en compte ou pas;

    Merci

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par yousky
    Laurent as-tu le même problème ou pas du tout ?
    Sous D2006 fix 10, le code suivant ne pose pas de pb dans l'évaluateur :
    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
    uses
      SysUtils,
      System.Text;
    var
      StrBuild : System.Text.StringBuilder;
      Chaine   : String;
      i:integer;
    begin
      StrBuild:=StringBuilder.Create(2048);
      Chaine:='01234567890abcdefghij';
       for i:= 0 to 100 do
         StrBuild.Append(Chaine);
      Chaine:=StrBuild.ToString;
      Writeln(Chaine);
    end.
    Citation Envoyé par yousky
    Par contre je ne comprends pas ta dernière phrase: "affichage primaire puis string" ?
    Je pensais contourner le pb en utilisant un spécificateur de format :chaine,D
    Citation Envoyé par yousky
    il n'y a plus du tout moyen de voir en mémoire le contenu d'une chaîne par exemple ?
    Pas à ma connaissance puisque le garbage collector peut à tout moment déplacer le contenu de la chaîne de caractères.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Halala désolé, j'avais oublié une chose importante :-(
    En fait c'est pas l'évaluation directe d'une chaîne, mais du contenu d'un TStringList, désolé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      procedure Check;
      var
        S: TStringList;
     
      begin
        S := TStringList.Create;
        try
          S.Text := StringOfChar('A', 1000);
        finally
          FreeAndNil(S);
        end;
      end;
    Voici le code à tester, comme tu pourras le remarquer, lorsque tu vas évaluer dans le débugger 'S.Text', ton résultat sera tronqué à 512 car.

    Lien sur le bug report Quality Center :
    http://qc.codegear.com/wc/qcmain.aspx?d=62146

    Désolé

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yousky
    Halala désolé, j'avais oublié une chose importante :-(
    Effectivement dans ce cas j'ai le même problème. En revanche la visu via les menus "Inpecter" et "Suivi" fonctionne bien.

    Je testerais avec Delphi 2007 dés que je peux.

  8. #8
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Exactement, ca fonctionne dans ces 2 modes d'évaluation.

    Sous BDS2007, en Win32, aucun problème, ma chaîne n'est pas tronquée, et en .NET je n'ai pas pu tester.

    Voilà, en tout cas c'est bien pénible pour, par exemple, récupérer toute une requête SQL d'un Query: Query.SQL.Text :-(

    Merci encore

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yousky
    Voilà, en tout cas c'est bien pénible pour, par exemple, récupérer toute une requête SQL d'un Query: Query.SQL.Text :-(
    Tu peux peut être utiliser des bloc de code conditionnels.

  10. #10
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Hummm comprends pas trop là

    Non pour le moment, le seul moyen me permettant de récupérer toute la chaine est de faire des découpages de 512 car dans l'évaluateur et de les concaténer dans mon editeur de texte. Pas terrible du tout

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yousky
    Hummm comprends pas trop là
    Puisque les chaines peuvent être affichées sans pb, tu peux utiliser une chaine tampon dans laquelle tu recopies le contenu d'un objet n'affichant pas correctement, dans l'évaluateur,son contenu et ce uniquement pour les cas de debug.
    La compilation conditionnelle te servant à te prémunir d'affichage parasite et/ou d'une présence de code inutile dans la version de proc.

    Voir aussi l'affichage dans une console dédiée :
    http://delphi.developpez.com/faq/?pa...consoledansgui
    et au cas où
    http://delphi.developpez.com/faq/?pa...conditionnelle

  12. #12
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Ok sauf que le problème c'est que je ne vais pas mettre ces rustines un peu partout dans le code de l'appli sur laquelle je viens tout juste d'arriver et de toute façon ce n'est pas pro du tout, ca pollu le code même avec l'utilisation de code conditionnel.

    Je préfères autant découper ma chaîne dans l'évaluateur que de rajouter ces bouts de codes.

    Merci encore de tes conseils.
    Par contre ils ne se bougent pas trop chez Code Gear :-(

  13. #13
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yousky
    mettre ces rustines
    Il ne s'agit pas de rustine mais de faciliter les phases de débuggage.
    Citation Envoyé par yousky
    de toute façon ce n'est pas pro du tout

    Première nouvelles! Que tu ne souhaites pas prendre de risque je peux le comprendre mais de là à dire que ce n'est pas professionnel, tu vas un peu vite en besogne. Dans ce cas que sont les développeurs de CodeGear (cf. VCL) ou du projet JEDI (cf. JVCL) qui utilisent cette technique ? Des bras cassés ?
    Faut tjr ce méfier des jugements de valeur
    Citation Envoyé par yousky
    ca pollu le code même avec l'utilisation de code conditionnel.
    Cette approche ne pollue rien du tout. Une fois le pb réglé il faut avoir la rigueur nécessaire pour remonter dans le gestionnaire de source le code d'origine contenant les corrections. Que cela soit contraignant certainement et encore...

    Polluer : Qui est souillé, sali, infecté par des déchets industriels, des agents physiques, chimiques, biologiques.
    Citation Envoyé par yousky
    Je préfères
    Là tu es plus objectif,
    Bon Dev

  14. #14
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut
    Ca fait des années que je développe en delphi sur différents projets et j'ai été à très bonne école (j'entend par là ma 1ere expérience professionnelle de 5 ans chez des pro du delphi), évidemment qu'on utilise bcp la compilation avec des directives conditionnelles surtout pour le dev de composants VCL heureusement d'ailleurs.

    Je veux simplement dire que dans ce cas qui nous intéresse, je ne veux pas corriger un bug, je veux simplement évaluer une requête SQL qui est stockée dans une TStringList, et cela j'ai besoin de le faire dans toutes les parties de code sur lesquelles je serai amené à travailler et donc à debugger.

    Le fait de mettre des rustines (et je persiste) juste pour pouvoir évaluer une requête SQL alors que c'est la tâche propre du debugger de te fournir cette fonctionnalité, c'est pour moi de la pollution de code pour rien. Etre obligé de poser des TODO pour être sûr de ne pas oublier d'enlever le code ajouté, bien penser à utiliser la directive de compilation, .... alors que si Messieurs de Code Gear prenait déjà la peine de lire mon Report je serais content.
    Je plaisante évidemment, j'ai une très bonne estime de Code Gear, ils font du bon boulot sur la version 2007 par rapport aux anciennes versions 2005-2006.

    Enfin voilà le pkoi de mes propos, je ne parlais pas sur la façon de coder en général, tout ce que tu as dis est vrai, je parlais simplement de mon problème et qu'être obligé d'utiliser des directives de compilation pour ca niet niet !

    voili voilou
    Merci

Discussions similaires

  1. Utiliser la JVCL v3.20 avec BDS 2006 ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 2
    Dernier message: 17/06/2006, 00h01
  2. [Delphi 2006 .NET] Client TCP
    Par Griswold dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 06/06/2006, 23h32
  3. BDS 2006: Changer la langue de l'EDI
    Par cfalcot dans le forum EDI
    Réponses: 2
    Dernier message: 02/05/2006, 17h49
  4. [BDS 2006] premières impressions
    Par Fbartolo dans le forum C++Builder
    Réponses: 30
    Dernier message: 20/04/2006, 15h17
  5. BDS 2006 - Delphi 2006
    Par Henry Cesbron Lavau dans le forum EDI
    Réponses: 3
    Dernier message: 02/12/2005, 12h22

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