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

VB.NET Discussion :

Espions conditionnels sous VB.net


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut Espions conditionnels sous VB.net
    Bonjour,

    Ancien adepte de VB6 je cherche désespérément dans VS2008 l'équivalent des espions conditionnels qu'il proposait.
    J'ai beau fouiller les menus et scruter les moteurs de recherches je ne trouve que des choses très compliquées ou totalement hors sujet.

    En bref voici ce que je cherche à retrouver:
    Une variable d'une classe est définie avec une valeur initiale, je voudrais que l'exécution en mode debug s'arrête lorsque la valeur change ou lorsqu'elle prend une valeur donnée quel que soit l'endroit où se produit l'affectation.

    Les points d'arrêt conditionnels ne résolvent pas le problème puisqu'il faut les déclarer aux endroits où l'on veut s'arrêter tandis que dans mon cas la variable peut être modifiée n'importe où au sein de la classe.

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Je crois que tu trouveras la réponse à ta question en lisant le document ci-joint (Extrait.pdf). Il s'agit d'extrait (comme son nom l'indique d'un cours. Cela concerne le débogage et la gestion des erreurs. La partie "Insertion de messages" devrait t'aider.
    Phil

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Merci pour ta réponse Phil mais elle ne correspond pas à ce que je recherche et qui semble bien avoir disparu dans VB.net ( vs VB6).

    J'essaie d'expliquer mieux:

    Dans vb6 on peut définir un espion qui va arrêter le code soit dans tous les modules , soit dans un module choisi, soit dans une procédure lorsque sa valeur est vérifiée ou lorsque la variable qu'il désigne change de valeur.
    Exemple:

    espion = MaVariableGlobale = 10
    condition de l'arrêt = vrai

    espion = MaVariableGlobale
    condition de l'arrêt = valeur change

    Si MaVariableGlobale peut être modifiée par l'affectation d'une dizaine de propriétés d'une demi-douzaine de classes on comprend l'intérêt d'un tel outil.

    Voilà ce que j'aimerais retrouver dans Visual Studio 2008.

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Personnellement, j'ignore si une telle option existe encore ou pas ; et je ne serais pas surpris que ce ne soit plus le cas ; et TANT MIEUX.
    Avoir besoin de surveiller un changement de valeur pouvant survenir de n'importe où (sans que l'on sache vraiment d'où en fait) c'est un gros signe de mauvais code, ça veut dire mauvais découpage, des choses qui manipulent d'autre chose qu'elles ne devraient probablement pas manipuler etc.
    Bref ça brise tous les principes de la programmation orientée objet, encapsulation ; une classe = une responsabilité = elle offre des services mais s'occupe elle-même de sa tambouille interne etc.
    Et vouloir faire en VB.Net comme en VB6 sous prétexte qu'il y a VB dans le nom et que les mots clefs sont similaires c'est se tirer une balle dans le pied à plus ou moins long terme (potentiellement pour le pied du type qui devra maintenir ensuite)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Citation Envoyé par Depite Voir le message
    Merci pour ta réponse Phil mais elle ne correspond pas à ce que je recherche et qui semble bien avoir disparu dans VB.net ( vs VB6).

    J'essaie d'expliquer mieux:

    Dans vb6 on peut définir un espion qui va arrêter le code soit dans tous les modules , soit dans un module choisi, soit dans une procédure lorsque sa valeur est vérifiée ou lorsque la variable qu'il désigne change de valeur.
    Exemple:

    espion = MaVariableGlobale = 10
    condition de l'arrêt = vrai

    espion = MaVariableGlobale
    condition de l'arrêt = valeur change

    Si MaVariableGlobale peut être modifiée par l'affectation d'une dizaine de propriétés d'une demi-douzaine de classes on comprend l'intérêt d'un tel outil.

    Voilà ce que j'aimerais retrouver dans Visual Studio 2008.

    Comme Sehnsucht , je crois que cette option n'existe pas en DotNet. Je ne peux me référer à VB6, il y a trop mlongtemps : je suis passé à DotNet depuis 2005 !
    Mais aussi, je ne vois pas trop l'intérêt de tester une variable partout : le plus souvent une variable nous intéresse là où elle présente un "risque" pour nos traitements. Pour ça, l'insertion conditionnelle de message devrait te dépanner (et te faire oublier les "facilités" de VB6).
    En tout cas, je n'ai rien de mieux à proposer. Et si quelqu'un a une solution, je sis intéressé de tester.

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Moi non plus, je n'ai pas trouvé cette option dans VB.net. Pour en rajouter, il faut dire que VB.net réduit considérablement les besoins de variables globales. Même que depuis VB 2012 ou VB 2013 (je ne me souviens plus trop), une variable déclarée publique dans sa classe doit être quand même instanciée dans toute autre classe qui y fait appel. (On dirait une variable publique "localisée", si on peut dire.) Même si c'est fatiguant au début, cela améliore la discipline.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je pense que tu peux faire ce que tu souhaites en utilisant une prioriete. Il suffit ensuite de mettre un breakpoint dans le setter :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Class Example
        Private _count As Integer
     
        Public Property Number() As Integer
            Get
                Return _count
            End Get
            Set(ByVal value As Integer)
                _count = value    ' Breakpoint sur cette ligne
            End Set
        End Property
    End Class
    Avec une variable globale, je ne pense pas qu'il soit possible de faire ce que tu souhaites.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Merci Sehnsucht pour la leçon d'éthique et le savon, je ne m'étendrai pas sur les motivations de ma discussion, mon but n'est ni d'être désagréable ni de polémiquer.

    Merci à DotNetMatt pour sa solution qui effectivement résout le problème dans l'exemple imaginaire que j'ai indiqué.

    Il n'en reste pas moins que, quoi que puissent en penser les maîtres de l'art, cette fonctionnalité puissante de débogage de VB6 semble ne pas trouver son pareil dans le super IDE de VS2008.

    Merci à tous pour vos réponses.

  9. #9
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    En même temps y'a jamais eu de variable globale en VB.Net depuis sa toute première version.
    L'idée de la propriété peut être pas mal, mais si c'est pour faire de la pseudo-globale… Vaudrait mieux comprendre l'intérêt de penser objet (et objet en tant que fournisseur de services surtout, pas comme agglomérat de données)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/11/2005, 11h22
  2. Comment eteindre un PC en C++ sous Visual.NET ?
    Par PONSOLLE dans le forum MFC
    Réponses: 2
    Dernier message: 01/09/2005, 22h19
  3. Réponses: 3
    Dernier message: 17/02/2005, 08h37
  4. Réponses: 6
    Dernier message: 30/01/2005, 23h48

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