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

Langage Delphi Discussion :

Ajouter un mode Debug


Sujet :

Langage Delphi

  1. #1
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 431
    Par défaut Ajouter un mode Debug
    Bonjour,

    Peut t'on ajouter une procédure en mode Debug (Configurations de build) de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {$IFDEF DEBUG}
    procedure TSokoban.CheckAllLvlSolveur;
    begin
    // -------
    end;
    {$ENDIF}
    Je me demande si cela est possible dans une application, ou s'il est déconseillé.

    Merci
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée.

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 530
    Billets dans le blog
    10
    Par défaut DEBUG
    Je l’utilise sans problème dans mes programmes et aussi dans la partie constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {$IFNDEF DEBUG}
        FPSecurity = true ;
    {$ELSE}
        FPSecurity = false ;
    {$ENDIF}
    Quand tu passes d'un mode à l'autre tu peux être amener à reconstruire plutôt que recompiler si comme moi tu redirige tout tes dcu's au même endroit

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 921
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 921
    Par défaut
    Il n'y a aucune restriction.

    Tu peux même uniquement conditionner les appels ; si la méthode n'est jamais invoquée, elle n'est pas compilée.

  4. #4
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 431
    Par défaut
    Merci
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 056
    Par défaut
    Pour ma part, j'utilise souvent avec un niveau en plus soit DEV, DEBUG et RELEASE, car parfois, on peut fournir une version DEBUG pour un client (en SAAS) pour analyser un problème mémoire (avec fichier MAP ...)
    La version DEV est totalement interne !
    Parfois une autre directive s'ajoute comme IMPL_INDY, IMPL_ICS ... quand on a un problème avec une lib de ce genre, on tente un code expérimental, cela permet d'obtenir plus de log la plupart du temps, le TRESTClient étant très peu explicite à ce sujet par exemple.

    Sinon, le cas le plus fréquent d'utilisation, systématique dans mon ancien emploi, et pour les outils internes pour l'actuel, c'est dans le DPR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Application.Run;
     
    {$IFDEF DEBUG}
    {$WARN SYMBOL_PLATFORM OFF}
      System.ReportMemoryLeaksOnShutdown := DebugHook <> 0;
    {$WARN SYMBOL_PLATFORM ON}
    {$ELSE DEBUG}
      System.ReportMemoryLeaksOnShutdown := False;
    {$ENDIF DEBUG}
    Tu peux créer tes propres directives, par exemple, ponctuellement, pour un débogage Indy (POP, IMAP, SMTP) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        {$IFDEF INDY_INTERCEPT}
        FIdConnectionIntercept := TIdConnectionIntercept.Create(nil);
        FIdConnectionIntercept.OnReceive := InterceptReceiveEventHandler;
        FIdConnectionIntercept.OnSend := InterceptSendEventHandler;
        FIdMessageClient.Intercept := FIdConnectionIntercept;
        {$ENDIF}
    Certaines devenant des "classiques", tu peux faire tes propres configurations :

    Nom : Sans titre.png
Affichages : 62
Taille : 7,2 Ko

    Tu peux le combiner avec le fait d'être aussi lancé depuis Delphi en débogage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          {$IFDEF MA_DIRECTIVE}
          {$WARN SYMBOL_PLATFORM OFF}
          if System.DebugHook <> 0 then
          begin
            OutputDebugString ...
          end;
          {$WARN SYMBOL_PLATFORM ON}
          {$ENDIF}


    Enfin, tu trouveras pas mal de code dans FMX qui utilise les directives pour faire les uses ou pour une factory selon l'OS

    Exemple très simple uOSUtils.OSExecute par exemple
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 921
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 921
    Par défaut
    Il est très rare que j'utilise directement {$IFDEF DEBUG} dans l'implémentation, je l'utilise plutôt pour conditionner d'autres conditions (ce qui limite le retour d'information à un cas précis).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {$IFDEF Debug}
      { $DEFINE ScrollElementIntoView}
      { $DEFINE ScrollParentIntoView}
      { $DEFINE ScrollMouseIntoView}
      {$DEFINE ScrollTouchIntoView}
     
      {$IF Defined(ScrollElementIntoView) or Defined(ScrollParentIntoView) or Defined(ScrollMouseIntoView) or Defined(ScrollTouchIntoView)}
        {$DEFINE Scroll}
      {$ENDIF}
    {$ENDIF}

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/05/2019, 13h53
  2. Détection mode debug
    Par paradise dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2004, 19h55
  3. Mode debug
    Par sivaller dans le forum Assembleur
    Réponses: 9
    Dernier message: 12/10/2004, 13h33
  4. chargement DLL mode debug/release
    Par bihorece dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/06/2004, 14h05
  5. Recupération lors d'un plantage (en mode debug)
    Par aRCHiMeD dans le forum MFC
    Réponses: 3
    Dernier message: 15/01/2004, 17h09

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