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 :

Débogage Visual Studio : Arrêt de l’exécution du code lorsque qu'une variable change.


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut Débogage Visual Studio : Arrêt de l’exécution du code lorsque qu'une variable change.
    Bonjour tous le monde,
    je me pose une question depuis très longtemps, il n'est jamais trop tard pour la poser je pense

    Sur Visual Studio en mode débogage, on peux ajouter des espions qui surveillent des variables. A t'on la possibilité d'interrompre automatiquement l’exécution du code lorsque une variable change ?
    En fait je ne me sert jamais des espions vue que je n'ai pas trouvé le moyen de faire cette interruption de manière automatique. Et ça m'oblige donc à faire un usage intensif de la fenêtre recherche pour placer tout mes points d'arrêts un par un partout ou la variable pourrait changer. Et si je veux surveiller une autre variable, ben j'efface tout mes points d'arrêts et j'en remets d'autres sur le même principe, autant dire que c'est très fastidieux.

    Merci à vous si vous avez des astuces plus efficaces.

  2. #2
    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
    Oui, c'est possible grâce aux points d'arrêt conditionnels : Continued Improvements for Breakpoint Configuration in Visual Studio 2015
    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.

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    @DotNetMatt, je connais bien les points d'arrêts conditionnels que j'apprécie fortement mais est-ce qu'il y a un moyen quelconque de dire que l'on veut l'ancienne valeur d'une variable à comparer avec sa nouvelle?
    Car je ne vois pas comment arriver à faire ce que BasicZX81 nous demandes, on serait obligé de créer une variable temporaire pour avoir une copie de l'ancienne valeur afin de pouvoir les comparer dans la condition du point d'arrêt...

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Oui, c'est possible grâce aux points d'arrêt conditionnels : Continued Improvements for Breakpoint Configuration in Visual Studio 2015
    Merci DotNetMatt et Sankasssss,
    @DotNetMatt : Sauf erreur de ma part la solution que tu cite oblige à rechercher chaque ligne ou la variable pourrait changer et placer un point d'arrêt sur chacune d'elle autrement dit ça reste très fastidieux, surtout si on souhaite surveiller plusieurs variables (en même temps ou chacun son tour). N'y a t'il pas plus simple ?

  5. #5
    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
    Citation Envoyé par Sankasssss Voir le message
    @DotNetMatt, je connais bien les points d'arrêts conditionnels que j'apprécie fortement mais est-ce qu'il y a un moyen quelconque de dire que l'on veut l'ancienne valeur d'une variable à comparer avec sa nouvelle?
    Car je ne vois pas comment arriver à faire ce que BasicZX81 nous demandes, on serait obligé de créer une variable temporaire pour avoir une copie de l'ancienne valeur afin de pouvoir les comparer dans la condition du point d'arrêt...
    Hmm en effet je n'avais compris qu'il fallait pouvoir voir l'ancienne valeur Je ne pense pas que ce soit possible de faire ca avec le debugger car même avec les espions, on ne peut voir que la valeur en cours, à moins comme tu dis d'en garder une copie mais bon est-ce que ca vaut le coup ?

    Citation Envoyé par BasicZX81
    @DotNetMatt : Sauf erreur de ma part la solution que tu cite oblige à rechercher chaque ligne ou la variable pourrait changer et placer un point d'arrêt sur chacune d'elle autrement dit ça reste très fastidieux, surtout si on souhaite surveiller plusieurs variables (en même temps ou chacun son tour). N'y a t'il pas plus simple ?
    Je ne pense pas qu'il y ait de solution miracle pour faire ca.

    Au final, peut-être qu'un autre moyen serait d'utiliser Debug.Assert ou Trace.Assert ? (voir Assertions in Managed Code) Ca permettrait de comparer les valeurs avant et après un changement là où c'est nécessaire.
    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.

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Je ne pense pas que ça en vaille le coup effectivement.
    La seule solution pour se rapprocher de ce que voudrait BasicZX81, se serait d'utiliser les Property. De cette manière nous avons un point centralisé d'accès à la variable privée et nous pouvons faire une comparaison de l'ancienne et de la nouvelle valeur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private _MaVariable As String
        Public Property MaVariable() As String
            Get
                Return _MaVariable
            End Get
            Set(ByVal value As String)
                _MaVariable = value ' Mettre un point d'arrêt conditionnel ici avec condition : _MaVariable <> value
            End Set
        End Property

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Merci à vous, ça reste des techniques qui fonctionnent mais ce sont des solutions pas très commode d’après moi.

    - Du traçage, j'en fait mais je ne généralise pas leur usage dans tout le code, uniquement pour surveiller les étapes importantes.
    - Pour les Property, pourquoi pas, mais dans le cadre d'un programme existant, j'imagine mal modifier mon code pour surveiller une variable.

    Il me semble que VB6 savait interrompre le code depuis son module espion...Dommage qu'on ne peux pas le faire sous Visual Studio....
    Je vais rester aux bons vieux points d'arrêts à placer un peu partout dans le code je pense.....

  8. #8
    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,

    Je n'ai pas vraiment de solution pour arrêter ton programme, mais ces quelques lignes m'ont inspiré quelque chose:

    Citation Envoyé par BasicZX81 Voir le message
    Bonjour tous le monde,

    Et ça m'oblige donc à faire un usage intensif de la fenêtre recherche pour placer tout mes points d'arrêts un par un partout ou la variable pourrait changer. Et si je veux surveiller une autre variable, ben j'efface tout mes points d'arrêts et j'en remets d'autres sur le même principe, autant dire que c'est très fastidieux.

    Merci à vous si vous avez des astuces plus efficaces.
    Si tu veux t'éviter de toujours effacer tes points d'arrêts, il y a moyen de les suspendre sans les effacer. Il y a quelques boutons pour cela que tu peux ajouter à tes barres d'outils. Cela ne permet pas d'avoir deux ensembles distincts de points d'arrêts, mais cela peut toujours servir.

    Là, je ne peux pas ouvrir VS car il est en pleine "réparation", mais plus tard, je pourrai toujours regarder au besoin.

    Édition:

    Il m'est venu une autre idée pour "conserver" une valeur sans interrompre le programme. Tu peux tricher en passant par My.settings. Visual Studio ne posera jamais la question si c'est vraiment un paramètre.
    À 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.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    @Clementmarcotte : Merci pour l'astuce pour suspendre les points d'arrêts, je ne connaissais pas.
    Par contre je n'ai pas compris pour My.settings, comment je peux interrompre mon programme avec ?

  10. #10
    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,

    Citation Envoyé par BasicZX81 Voir le message
    Par contre je n'ai pas compris pour My.settings, comment je peux interrompre mon programme avec ?
    Ce n'est pas pour arrêter, c'est pour conserver une trace de la valeur précédente.
    À 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.

  11. #11
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Bonjour,

    Déjà pour trouver tous les endroits où la variable est utilisé, pas besoin de faire un Ctrl+F fastidieux, si tu fais un clique-droit sur la variable, tu cliques sur "Find All Références", ça va t'ouvrir une fenêtre avec toutes les itérations de la variables, en double cliquant dessus, il t'emmène, c'est donc facile d'aller y mettre un point d'arrêt.

    Et en mettant un espion sur ta variable, tu la verra changer en live. Et je crois bien que depuis cette fenêtre, on peut "forcer" la valeur de la variable.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  12. #12
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Merci mactwist69, je n'utilise pas assez cette fonction du coup je l'avais oublié....

Discussions similaires

  1. Réponses: 16
    Dernier message: 06/01/2010, 16h17
  2. Réponses: 7
    Dernier message: 11/03/2007, 09h35
  3. [Visual Studio 2005] Ré-indenter mon code
    Par Rodie dans le forum VC++ .NET
    Réponses: 7
    Dernier message: 20/10/2006, 17h16
  4. [MySQL] code php dans une variable chaine php
    Par unmulot dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 11/07/2006, 10h48
  5. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55

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