Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Débogage et arrêt lors du changement de valeur d'une variable

9 réponses
Avatar
Yodaz
Bonjour,
Je cherche comment faire dans Visual Studio 2005 pour mettre une condition
d'arrêt sur un espion, en fonction de sa valeur.
J'ai trouvé comment faire pour mettre une condition sur un point d'arrêt,
mais cela ne correspond pas à ce dont j'ai besoin.

Pour donner un exemple, j'ai une liste d'objets, et je voudrais que le
débogueur s'arrête lorsque la propriété .Count de la liste vaut 0, ou que
la valeur de .Count change.

Cette fonctionnalité était présente dans VB6 (arrêter lorsque la valeur
change, si je me souviens bien) mais je ne la retrouve pas dans
Visual Studio 2005.

Est ce que quelqu'un peut m'éclairer ?

Merci d'avance.

9 réponses

Avatar
Gilles TOURREAU [MVP]
"Yodaz" a écrit dans le message de
news:47c68767$0$26658$
Bonjour,
Je cherche comment faire dans Visual Studio 2005 pour mettre une condition
d'arrêt sur un espion, en fonction de sa valeur.
J'ai trouvé comment faire pour mettre une condition sur un point d'arrêt,
mais cela ne correspond pas à ce dont j'ai besoin.

Pour donner un exemple, j'ai une liste d'objets, et je voudrais que le
débogueur s'arrête lorsque la propriété .Count de la liste vaut 0, ou que
la valeur de .Count change.

Cette fonctionnalité était présente dans VB6 (arrêter lorsque la valeur
change, si je me souviens bien) mais je ne la retrouve pas dans
Visual Studio 2005.

Est ce que quelqu'un peut m'éclairer ?

Merci d'avance.




Bonjour,

http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html
Chapitre : "Arrêter le débogueur selon une condition en utilisant Visual
Studio"

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Yodaz
Gilles TOURREAU [MVP] a écrit :

Bonjour,

http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html

Chapitre : "Arrêter le débogueur selon une condition en utilisant Visual
Studio"

Cordialement




Bonjour et merci pour votre réponse, mais ce n'est pas exactement ce que je
cherche, en fait je voudrais que ce soit la condition qui déclenche l'arrêt de
l'exécution, et non le point d'arrêt.
Je veux pouvoir spécifier l'arrêt de l'exécution sans mettre de point d'arrêt,
uniquement sur la condition de changement de valeur de la variable, comme dans
VB6.
Avatar
Clark [MVP CRM]
Bonjour
Très bon article ma foi!
Merci
"Gilles TOURREAU [MVP]" a écrit dans le message de
news:
"Yodaz" a écrit dans le message de
news:47c68767$0$26658$
Bonjour,
Je cherche comment faire dans Visual Studio 2005 pour mettre une
condition
d'arrêt sur un espion, en fonction de sa valeur.
J'ai trouvé comment faire pour mettre une condition sur un point d'arrêt,
mais cela ne correspond pas à ce dont j'ai besoin.

Pour donner un exemple, j'ai une liste d'objets, et je voudrais que le
débogueur s'arrête lorsque la propriété .Count de la liste vaut 0, ou que
la valeur de .Count change.

Cette fonctionnalité était présente dans VB6 (arrêter lorsque la valeur
change, si je me souviens bien) mais je ne la retrouve pas dans
Visual Studio 2005.

Est ce que quelqu'un peut m'éclairer ?

Merci d'avance.




Bonjour,

http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html
Chapitre : "Arrêter le débogueur selon une condition en utilisant Visual
Studio"

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Avatar
Gilles TOURREAU [MVP]
"Yodaz" a écrit dans le message de
news:47c7d58b$0$6708$
Gilles TOURREAU [MVP] a écrit :

Bonjour,

http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html
Chapitre : "Arrêter le débogueur selon une condition en utilisant Visual
Studio"

Cordialement




Bonjour et merci pour votre réponse, mais ce n'est pas exactement ce que
je
cherche, en fait je voudrais que ce soit la condition qui déclenche
l'arrêt de
l'exécution, et non le point d'arrêt.
Je veux pouvoir spécifier l'arrêt de l'exécution sans mettre de point
d'arrêt,
uniquement sur la condition de changement de valeur de la variable, comme
dans
VB6.




Bonjour,

Dans ce cas lisez le chapitre : "Arrêter le débogueur selon une condition
(Par programmation)."

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Yodaz
Gilles TOURREAU [MVP] a écrit :


Bonjour,

Dans ce cas lisez le chapitre : "Arrêter le débogueur selon une
condition (Par programmation)."

Cordialement



Ca ne correspond pas à mon problème : je ne sais pas à quel moment de
l'exécution la propriété .Count va prendre la valeur pour laquelle je veux
arrêter l'exécution, je ne peux donc pas placer le .Break() a un endroit
judicieux, et c'est pour ça que je cherche un moyen de créer un "espion
conditionnel".
Avatar
Gilles TOURREAU [MVP]
"Yodaz" a écrit dans le message de
news:47cbb30e$0$4905$
Gilles TOURREAU [MVP] a écrit :


Bonjour,

Dans ce cas lisez le chapitre : "Arrêter le débogueur selon une condition
(Par programmation)."

Cordialement



Ca ne correspond pas à mon problème : je ne sais pas à quel moment de
l'exécution la propriété .Count va prendre la valeur pour laquelle je veux
arrêter l'exécution, je ne peux donc pas placer le .Break() a un endroit
judicieux, et c'est pour ça que je cherche un moyen de créer un "espion
conditionnel".




Bonjour,

Dans ce cas dans l'article :
http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html

Chapitre "Arrêter le débogueur selon une condition en utilisant Visual
Studio."
Paragraphe : "Arrêter le débogueur selon le changement d'une expression".

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Yodaz
Gilles TOURREAU [MVP] a écrit :


Bonjour,

Dans ce cas dans l'article :
http://gilles.tourreau.fr/dotnet/visual_studio/vs2005_2008_aller_plus_loin_avec_le_debogueur_de_visual_studio.html


Chapitre "Arrêter le débogueur selon une condition en utilisant Visual
Studio."
Paragraphe : "Arrêter le débogueur selon le changement d'une expression".

Cordialement




Bonjour,
Je pense que je me suis mal exprimé ou mal fait comprendre. J'ai lu avec
attention votre article (qui est très clair au demeurant), et dans le chapitre
"Arrêter le débogueur selon le changement d'une expression" on peut lire ceci

"Ajouter un point d'arrêt au niveau de la condition "if (i == 500)" et
spécifiez une condition comme précédemment sur celui-ci. Saisissez "b" dans la
condition et sélectionnez "a changé"

Si je comprends bien cette phrase, cela signifie qu'a chaque passage sur le
point d'arrêt, la variable b est évaluée, et l'exécution s'arrête si la valeur
de b change.

Ce n'est pas le comportement que je souhaite reproduire. J'avais dans l'idée
de reproduire le comportement du débogueur de Visual Basic 6, à savoir un
"espion conditionnel" : on ajoute un espion sur une variable, la valeur de la
variable est évaluée en permanence, et l'exécution s'arrête automatiquement
dès que la valeur de la variable change, * sans qu'il ne soit nécessaire de
placer de point d'arrêt*. Ce comportement est j'imagine couteux en terme de
performance, cependant cela s'avérait être un gain de temps appréciable.
Avatar
edt992
Le jeudi 28 Février 2008 à 11:05 par Yodaz :
Bonjour,
Je cherche comment faire dans Visual Studio 2005 pour mettre une condition
d'arrêt sur un espion, en fonction de sa valeur.
J'ai trouvé comment faire pour mettre une condition sur un point
d'arrêt,
mais cela ne correspond pas à ce dont j'ai besoin.

Pour donner un exemple, j'ai une liste d'objets, et je voudrais que le
débogueur s'arrête lorsque la propriété .Count de la
liste vaut 0, ou que
la valeur de .Count change.

Cette fonctionnalité était présente dans VB6
(arrêter lorsque la valeur
change, si je me souviens bien) mais je ne la retrouve pas dans
Visual Studio 2005.

Est ce que quelqu'un peut m'éclairer ?

Merci d'avance.


Bonjour,

Toujours personne n'a de solution à ce problème ? J'ai aussi le même soucis (besoin de mettre un point d'arrêt quand une variable globale prend une certaine valeur) mais je n'ai pas trouvé comment faire avec Visual Studio. Avec VB6 c'était facile "Ajouter un espion" puis cocher "Arret si la valeur est vraie", mais en VB.Net, pas moyen de trouver

Je re-précise qu'il ne s'agit pas de mettre une condition à un point d'arret, ça ne répond pas au besoin. Dans le cas présent, je ne sais pas où ma variable prend la valeur souhaitée, donc je ne peux pas placer de point d'arret.

Merci d'avance.
Avatar
mgdsoftware
Le jeudi 28 Février 2008 à 11:05 par Yodaz :
Bonjour,
Je cherche comment faire dans Visual Studio 2005 pour mettre une condition
d'arrêt sur un espion, en fonction de sa valeur.
J'ai trouvé comment faire pour mettre une condition sur un point
d'arrêt,
mais cela ne correspond pas à ce dont j'ai besoin.
Pour donner un exemple, j'ai une liste d'objets, et je voudrais que le
débogueur s'arrête lorsque la propriété .Count de la
liste vaut 0, ou que
la valeur de .Count change.
Cette fonctionnalité était présente dans VB6
(arrêter lorsque la valeur
change, si je me souviens bien) mais je ne la retrouve pas dans
Visual Studio 2005.
Est ce que quelqu'un peut m'éclairer ?
Merci d'avance.
Bien que ce sujet soit vieux de plus de 10 ans, j'ai trouvé une réponse à ce problème, que j'avais également.
Il suffit de transformer la variable globale en propriété et de mettre un point d'arrêt sur le Set:
public int Globale
{
Get;;
Set;
}
En mettant un point d'arrêt sur la ligne "Set;", Le programme s'arrête à chaque changement de la valeur. On peut aussi mettre un point d'arrêt conditionnel si nécessaire. Et grâce à la pile des appels, on peut savoir le code qui a provoqué ce changement.
Et si on veut vraiment une variable et non une propriété pour la version définitive, il suffit de jouer avec DEBUG :
#if DEBUG
public int Globale
{
Get;;
Set;
}
#else
public int Globale;
#endif