gratifiant > microsoft.* > microsoft.dotnet.csharp

Yodaz (28/02/2008, 12h05)
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.
Gilles TOURREAU [MVP] (28/02/2008, 20h23)
"Yodaz" <yodazz> a écrit dans le message de
news:74cc
[..]
> Visual Studio 2005.
> Est ce que quelqu'un peut m'éclairer ?
> Merci d'avance.


Bonjour,


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

Cordialement
Yodaz (29/02/2008, 11h51)
Gilles TOURREAU [MVP] a écrit :
> Bonjour,
>
> 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.
Clark [MVP CRM] (29/02/2008, 19h11)
Bonjour
Très bon article ma foi!
Merci
"Gilles TOURREAU [MVP]" <gilles.tourreau> a écrit dans le message de
news:7a74
[..]
Gilles TOURREAU [MVP] (01/03/2008, 11h35)
"Yodaz" <yodazz> a écrit dans le message de
news:74cc
[..]
> 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
Yodaz (03/03/2008, 10h13)
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".
Gilles TOURREAU [MVP] (08/03/2008, 11h50)
"Yodaz" <yodazz> a écrit dans le message de
news:74cc
> Gilles TOURREAU [MVP] a écrit :
> 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 :


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
Yodaz (10/03/2008, 10h17)
Gilles TOURREAU [MVP] a écrit :
> Bonjour,
> Dans ce cas dans l'article :
>
> 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.
edt992 (15/03/2013, 17h13)
Le jeudi 28 Février 2008 à 11:05 par Yodaz :
[..]
> 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 souci
(besoin de mettre un point d'arrêt quand une variable globale prend une certain
valeur) mais je n'ai pas trouvé comment faire avec Visual Studio. Avec VB
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, ç
ne répond pas au besoin. Dans le cas présent, je ne sais pas où ma variabl
prend la valeur souhaitée, donc je ne peux pas placer de point d'arret.

Merci d'avance.
mgdsoftware (06/11/2018, 14h56)
Le jeudi 28 Février 2008 à 11:05 par Yodaz :
[..]
> 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 à c
problème, que j'avais également.
Il suffit de transformer la variable globale en propriété et de mettre un poin
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 à chaqu
changement de la valeur. On peut aussi mettre un point d'arrêt conditionnel s
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 versio
définitive, il suffit de jouer avec DEBUG :

#if DEBUG
public int Globale
{
Get;;
Set;
}
#else
public int Globale;
#endif
Discussions similaires