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

Visual Studio Discussion :

Visual Studio, mode debug & visualisation de variables


Sujet :

Visual Studio

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut Visual Studio, mode debug & visualisation de variables
    Bonjour les spécialistes!

    Je sors d'un env' de dév' indus propriétaire (B&R pour les spécialistes...), donc pas grand public, mais qui avait une force exceptionnelle: sa simplicité!
    -> un bouton/menu debug qui ouvre une zone sur la droite
    -> drag & drop de la variable concernée
    -> et affichage de sa valeur
    D'une simplicité biblique!!

    J'arrive sur VS que je découvre peu à peu, mais déjà, impossible de trouver cette simple notion de base!!??!!!

    J'ai même essayé un bête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(" ***** index ***** " + cboType.SelectedIndex);
    (qui représente juste l'index de l'élément choisi dans une listbox)

    Mais là non plus, je ne trouve pas la console de sortie qui afficherait ma valeur...

    Donc, comment faire ce genre de truc sous VS?
    Ca ressemble vraiment à une usine à gaz, contre-intuitive au possible...

    Merci.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    Normal quand on change d'environnement de trouver ça contre intuitif, pour ma part je trouve que VS est très puissant et pratique ^^
    (et parfois buggé et chiant aussi )

    pour débugger tu peux mettre des points d'arrêt en cliquant dans la marge d'une ligne de code (ou F9 avec le cuseur sur la ligne)
    quand le code arrive sur un point d'arrêt l'exécution se met en pause et tu peux alors vérifier toutes les variables, modifier le code etc...
    tu peux même mettre des conditions sur les points d'arrêt
    tu peux déplacer la flèche jaune qui montre quelle ligne va être exécutée après soit avant pour refaire un bout de code, soit après pour en zapper un, et tu peux avancer avec F10 ou F11 (F11 rentrant dans les membres alors qu'F10 non, et F5 ca sort de la pause)
    etc...
    sans pause tu ne peux pas connaitre la valeurs des variables

    une fois le programme en pause si tu passes la souris sur une variable tu peux voir et inspecter son contenu en passant la souris dessus dans une mini fenetre
    tu peux alors épingler l'espion sur la fenetre de code directement (le fait de savoir la valeur en debug)
    sur une variable tu peux aussi faire clic droit / ajouter un espion, ca l'ajoute alors dans une fenetre (souvent dockée en bas) avec toutes les variables que tu veux suivre (fenetre qui doit s'afficher à ce moment là si elle ne l'est pas, sinon tous les morceaux de fenetre que tu veux ajouter à VS sont dans le menu fenetre)
    il y a l'espion express qui est un mix entre ajouter un espion et passer la souris sur une variable (shift+F9 sur une variable) ca permet d'avoir une fenetre qui pop pour regarder le contenu

    Console.Writeline ca doit écrire dans la fenetre "Sortie" je pense
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Oui, je n'ai pas parlé breakpoints car pour moi c'était implicite.

    Pour le reste, je vais essayer ce que tu préconises.

    Et pour
    c'est dans dans l'onglet "fenêtre exécution" oui!
    Mais, pourquoi ne pas garder des noms cohérents chez MS, ça c'est autre chose!

    Quant à la l'adaptation, je sens que je vais ramer, oui!!
    -> adaptation EDI
    ET
    -> C# que je n'ai que découvert qu'il y a peu

    D'ailleurs, si tu as de bons tutos débutants pour les 2 (VS & C#) à me conseiller...
    -> j'avais regardé pour VS avant de poster
    -> mais rien de concluant
    -> des notions trop avancées pour moi pour le moment

    Merci.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    Clairement VS est une usine à gaz ^^
    j'ai pas spécialement de tutos à conseiller (ayant commencé en vb.net avant de switcher) mais je crois qu'il y en a sur ce site
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Et le mot est FAIBLE oui!!

    Ok, vais refaire une passe sur les tutos, alors...

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    certains types de projets peuvent être fait avec visual studio code (pas tous)
    c'est une version à moitié light de visual studio et à moitié différente
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    sacré mélange: 50%light / 50% différent

    moi je suis sous Microsoft Visual Studio Community*2022

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    Pour visual studio, tu peux peut-être commencer par là https://learn.microsoft.com/fr-fr/tr...-studio-intro/ (qui fait partie du parcours proposé https://learn.microsoft.com/fr-fr/tr...visual-studio/ )

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Je vais creuser, merci

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Effectivement, ne serait-ce que celui-ci est TRES intéressant!

    https://learn.microsoft.com/fr-fr/vi...r?view=vs-2022

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Tiens, j'ai une autre question (C#), sans rapport avec le topic (et au besoin de la déplacerai), mais pour vous ça devrait être rapide!

    En fait, je ne vois pas trop la différence/nuance entre les get/set classiques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public String GetPrenom() 
    {
       return prenom;
    }
    public String SetPrenom(String p) 
    {
       prenom = p;
    }
    et les propriétés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public string Prenom 
    {
         get { return prenom; }
         set { prenom = value; }
    }
    Donc:
    1.) quel est l'intérêt d'avoir 2 trucs faisant la même chose?
    2.) lequel faut-il privilégier et pourquoi?

    Car, pour moi, c'est strictement identique!

    Si pour le GET, il n'y a pas grand chose de plus à faire que de renvoyer sa valeur.
    Concernant le SET par contre, dans l'un comme dans l'autre on peut imaginer des traitements plus complexes (tests de format, validité, etc..)

    Je ne vois donc l'intérêt supplémentaire de l'un par rapport à l'autre...

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    ca fait un peu la même chose oui ^^
    mais en propriété ca fait un seul membre utilisable, au lieu d'avoir 2 méthodes affichées dans l'intellisense (= auto complétion de visual studio)
    il y a des trucs basés sur les propriétés, donc si tu n'as pas de propriété tu ne pourras pas les utiliser (binding, notification de propriété qui change de valeur, sérialisation etc...)


    et il y a les propriétés automatiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string Prenom {get;set;}
    à la compilation il va créer une variable privée et écrire le code des get et set donc le résultat est le même, mais ca fait moins à écrire et sur une seule ligne


    pour info dans le get on peut aussi mettre du code, genre initialiser la variable privée qui sera retournée (lors du 1er appel du get) ce qui permet de limiter les trucs instanciés si non utilisées
    enfin il y a plein de scénarios imaginables
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    Dans ton 1er cas, ce sont des méthodes et on veut maitriser l'accès à l'info en ne donnant pas accès à la variable.
    Dans l'autre, on donne accès à la variable.

  14. #14
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    Citation Envoyé par umfred Voir le message
    Dans ton 1er cas, ce sont des méthodes et on veut maitriser l'accès à l'info en ne donnant pas accès à la variable.
    Dans l'autre, on donne accès à la variable.
    non
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Dans l'autre, on donne accès à la variable.
    Mais je croyais justement qu'il fallait surtout que les variables soient private, et que seuls les méthodes d'accès étaient public.
    Un des principes de l'objet.

  16. #16
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 371
    Par défaut
    Bonjour,
    L'avantage des propriétés est que vue de l'extérieur de la classe, elles se présentent comme un membre "simple", et vue de l'intérieur comme des méthodes.
    Ca permet de faire ce genre de truc:
    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
    16
    17
    18
    19
     
    public class MaClasse
    {
        private bool modified;
        private int indice;
        public int Indice
        {
            get => indice;
            set
            {
                If (value <> indice)
                    modified = true;
                indice = value;
            }
        }
    }
     
    var MonInstance = new MaClasse();
    MonInstance.Indice++

  17. #17
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    Citation Envoyé par steph68b Voir le message
    Mais je croyais justement qu'il fallait surtout que les variables soient private, et que seuls les méthodes d'accès étaient public.
    Un des principes de l'objet.
    Ne prête pas attention à ce qu'il a dit, c'est soit faux soit sans signification

    une variable doit bien être privée
    (après quand on y réfléchit, avoir une variable privée et une propriété publique qui ne fait rien ca revient au même que d'avoir une variable publique ^^)
    une propriété c'est juste un côté pratique quand on code, à la compilation il y a bien 2 méthodes générées comme si tu avais fait 2 méthodes
    une propriété ne pointe pas toujours vers une variable, ca peut retourner un calcul et ne pas avoir de setter par exemple

    vu que c'est plus pratique autant les utiliser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 532
    Par défaut
    Ok, merci

  19. #19
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 755
    Par défaut
    Bonjour,

    Au risque de ne pas éclaircir grand-chose, pour ma part il y a une chose que je n'ai pas trouvée intuitive, c'est que si on a chargé un projet qui comporte une erreur de syntaxe à la ligne 728 de Form14.cs, la fenêtre d'exécution devient incapable de dire combien font "?4*5". Alors qu'une fois qu'on a corrigé l'erreur de syntaxe de la ligne 728, ça y est il a retrouvé les tables de multiplication.

    Je précise que la ligne 728 ne fait aucun traitement sur des nombres ou un affichage de nombres.

  20. #20
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 755
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    une variable doit bien être privée
    (après quand on y réfléchit, avoir une variable privée et une propriété publique qui ne fait rien ca revient au même que d'avoir une variable publique ^^)
    une propriété c'est juste un côté pratique quand on code, à la compilation il y a bien 2 méthodes générées comme si tu avais fait 2 méthodes
    Si on a juste l'accès à la valeur, effectivement ça va donner le même résultat.
    L'avantage, c'est juste que comme on est obligé de passer par là pour obtenir la valeur, ça devient possible d'y placer autre chose.
    Du style, enregistrer dans le fichier log que Duschmoll a accédé à la valeur le 31 février à 25 heures cinquante douze.
    Si la semaine d'après on s'aperçoit qu'il a été fait un usage louche de cette variable, cette information peut avoir un intérêt.

Discussions similaires

  1. visual studio 2008 : ajouter un type de variable
    Par mumuri dans le forum Visual C++
    Réponses: 0
    Dernier message: 09/07/2010, 18h02
  2. visual studio mode source et code behind
    Par tortuegenie dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/12/2009, 16h53
  3. Visual Studio 2005 - debug thread
    Par Erakis dans le forum Windows Forms
    Réponses: 14
    Dernier message: 01/10/2009, 15h09
  4. [Visual Studio 2005 Debug]Problème de debug
    Par Astraya dans le forum Visual Studio
    Réponses: 1
    Dernier message: 12/02/2009, 10h53

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