/ / Visual Studio se comporte étrangement lors du débogage avec des conditions de point d'arrêt - visual-studio, le débogage

Visual Studio se comporte étrangement en déboguant avec des conditions de point d'arrêt - visual-studio, débogage

Une méthode avec laquelle je travaille s'appelle des dizaines deDes milliers de fois ont commencé à lancer des exceptions récemment. Dans la plupart des situations de débogage, je définissais un point d'arrêt au sommet de cette méthode et la parcourais jusqu'à ce que l'appel qui m'intéresse me intéresse avec une valeur de paramètre qui déclenche l'exception. point d'arrêt avec une condition qui ne se brisera que lorsque la valeur de ce paramètre apparaîtra. J'ai créé un point d'arrêt à la position indiquée ci-dessous et lui ai donné une condition. str == "OffendingValue".

class Foo
{
// Bar() is called many, many times
void Bar(string str)
{
try
{
// Breakpoint inserted here
...
}
catch (Exception ex)
{
...
}
}
}

A ma grande surprise, cela a causé Visual Studioet mon application pour cesser de fonctionner en mode débogage. Mon application a démarré et a généré quelques messages de journalisation simples, mais a ensuite complètement cessé de répondre. Pensant que Visual Studio fonctionnait peut-être un peu plus lentement en raison du travail supplémentaire nécessaire pour surveiller la condition du point d'arrêt, je me suis éloigné de mon bureau pendant 15 minutes pour lui laisser un peu de temps pour s'exécuter. À mon retour, il n'y a pas eu de changement. Je peux reproduire la condition en supprimant le point d'arrêt et en le recréant avec la même condition. Le plus étrange de tous, la commande de débogage Break All, qui interrompra généralement l’exécution du programme sur l’instruction qui est actuellement en cours d’exécution, qu’il s’agisse ou non d’un point d’arrêt, ne fait rien du tout lorsque j’ai activé ce point d’arrêt problématique.

Quelqu'un a-t-il rencontré un comportement similaire avec les conditions de point d'arrêt de Visual Studio? Je suis capable d'utiliser les conditions de nombre de hits sans problème.

Réponses:

7 pour la réponse № 1

Chaque fois que j'ai essayé d'utiliser conditionnelJ'ai eu le même problème avec les points d'arrêt dans Visual Studio. Le débogueur s'exécute si lentement que cela devient inutile. Au lieu de cela, je finis par ajouter temporairement une instruction if au code et y ajouter mon point d'arrêt. Ce n'est pas très pratique, mais le code s'exécute à un rythme normal et le travail est fait.

class Foo
{
// Bar() is called many, many times
void Bar(string str)
{
try
{

if(str == "condition")
{
int i = 0;   // Breakpoint inserted here
}
...
}
catch (Exception ex)
{
...
}
}
}

2 pour la réponse № 2

Si vous connaissez la valeur incriminée, ne pouvez-vous pas simplement écrire un test unitaire pour cette méthode et la déboguer de cette façon?

Sinon, si vous connaissez l'exception, vous pouvez configurer votre débogueur pour qu'il se termine lorsque cette exception est levée. Aller au débogage | Exceptions et cochez la case Jetée pour l'exception en question.


0 pour la réponse № 3

Je me demande si vous obtenez un débordement de pile. Est-ce que VS suit toutes les valeurs de str ou quoi que ce soit en relation avec chaque état de Bar? Si c'est le cas, les milliers d'exemplaires pourraient s'additionner.

Je me demande si vous pourriez éliminer le problème de la surveillance de la valeur via une variable globale plutôt que dans la fonction.