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

EDI Delphi Discussion :

Débogage corrompu par les optimisations du compilateur


Sujet :

EDI Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut Débogage corrompu par les optimisations du compilateur
    Bonjours a tout .

    Juste une information , sur le mode de fonctionnemet de boucle For.. en mode pas a pas .

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i:=1 to 5 do
    begin
        toto[i]:=i;
    end;
    - donc çà n'influs pas sur le fonctionnement du code , mais quand je suis dans cette boucle en pas a pas , la premiere fois que je rentre a l'interieur de la boucle la valeur de i=5 . en fin de compte il decompte de 5 a 1, comme si ma boucle etait composée avec un 'downto' ???

    - j'ai aussi constaté en mode pas a pas , que delphi me donne de fausse valeur quand je promene la souris sur mes variable ??

    quelqu'un a t il deja vu ce probleme ??

    et pour finir existe t il une configuration pour voir tout de meme en mode pas a pas le contenu des variables optimisé par le compilateur ??

    bye a tout ..
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut Re: Info!! Probleme en debugage???
    Citation Envoyé par petitcoucou31
    - donc çà n'influs pas sur le fonctionnement du code , mais quand je suis dans cette boucle en pas a pas , la premiere fois que je rentre a l'interieur de la boucle la valeur de i=5 . en fin de compte il decompte de 5 a 1, comme si ma boucle etait composée avec un 'downto' ???
    Comme le sens de la boucle n'influe pas sur le résultat, Delphi la code à l'envers. Simplement qu'en assembleur il est plus rapide de faire une boucle descendante que le contraire...

    Citation Envoyé par petitcoucou31
    - j'ai aussi constaté en mode pas a pas , que delphi me donne de fausse valeur quand je promene la souris sur mes variable ??

    quelqu'un a t il deja vu ce probleme ??
    Les valeurs fausses que je vois sont en général dues à des bugs...

    Citation Envoyé par petitcoucou31
    et pour finir existe t il une configuration pour voir tout de meme en mode pas a pas le contenu des variables optimisé par le compilateur ??
    Non... Je ne crois pas.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Pour débugger, tu peux toujours décocher l'option d'optimisation dans les préférences du projet.

  4. #4
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ...
    Peut on voir les variables quand on debug ?
    Enfin l'avancement en l'occurence de i ici ?

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    - Oui , on peut visualiser l'avance de la variable , donc dans mon exemple I a chaque passage dans la boucle.

    Donc si j'ai bien compris c'est le compilateur qui decide de decrementer ou incrementer la boucle en fonction de ce qui se passe a l'interieur de celle ci, sinon dans certain cas çà ne marcherai pas ..

    par exemple un tableau1 qui a les valeur A,B,C,D,E et je veux copier les premiere valeur dans un autre tableau2 tant que je trouve pas C

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure toto ;
    var i : integer ;
    begin
        For i:=1 to 5 do 
        begin
            tableau1[i]:=tableau2[i]
            if tableau2[i]='C' then break;
        end;
    end;
    dans ce cas il incremente bien sinon çà ne marcherai pas ????
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  6. #6
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Citation Envoyé par petitcoucou31
    Donc si j'ai bien compris c'est le compilateur qui decide de decrementer ou incrementer la boucle en fonction de ce qui se passe a l'interieur de celle ci, sinon dans certain cas çà ne marcherai pas ..
    Ben oui, cela s'appelle de l'optimisation. Le compilateur cherche à générer un code optimal correspondant à ce que veux faire, même si cela se traduit par un "algorithme" légèrement différent de celui qui a été écrit.

  7. #7
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut
    ouie !
    Je ne pense pas que l'on puisse parler ici d'algorithme "différent".
    Modifier un algorithme revient a modifier la pensée sous tendue.
    Il est évident que je comprends ce que Monsieur Pierre a voulu dire,
    il y a dans sa phrase un but didactique évident.
    mais ... un algorithme est un ensemble de règles, capable de résoudre un problème en un nombre fini d'opérations. Je suis contre l'idée qu'un compilateur, quel qu'il soit, puisse modifier un algorithme. Que le compilateur fasse "+ (+1)" ou "+ (-1)" et adapte la comparaison de décision importe peu. L'idée est : a t on effectué 5 fois l'ensemble ?
    Cette derniere question fait partie réellement de l'algorithme, pas la facon dont cette question est pratiquement construite. Un algorithme est un schéma composé de mots et des phrases. Le compilateur n'a pas modifié l'algorithme, il a modifié l'implémentation de l'algorithme. L'idée qu'un compilateur pourrait modifier votre algorithme est perverse.
    Oui ... je pinaille ... mais l'idée de Monsieur Pierre me heurte !
    meme par simplification, je pense qu'il ne faut pas induire ce genre de concept. Cela pourrait facilement dénaturer l'idée que l'on a, soit d'un compilateur, soit d'un algorithme. Un algorithme exprime une pensée, un compilateur n'exprime rien du tout.
    respect a Monsieur Pierre ... par définition ! qui a joué "pour bien faire" d'un léger abus de simplification ... tout a son honneur !

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 20/10/2014, 08h44
  2. optimisation de la logique floue par les algorithmes génétiques
    Par mimi_14 dans le forum Intelligence artificielle
    Réponses: 5
    Dernier message: 15/12/2010, 13h15
  3. Optimisation par les PSO (les bancs de poissons)
    Par takfa2008 dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 14/05/2009, 11h36
  4. Copies de flots en passant par les itérateurs
    Par Christophe Brun dans le forum C++
    Réponses: 7
    Dernier message: 02/07/2003, 11h41
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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