Question

J'ai une exception non perdue qui fait apparaître la boîte de dialogue de l'assistant d'exception.

Lorsque je clique sur le détail de la vue ..., l'exception elle-même a quelques valeurs dans son modèle d'objet personnalisé qui n'évaluera pas dans la grille de propriété, mais je sais que je peux l'évaluer dans la fenêtre immédiate. (Dans ce cas, la grille de propriété ne me laissera pas explorer une collection, mais il peut y avoir d'autres cas)

Sans modifier le code pour ajouter un bloc d'essai, Comment puis-je aller à la fenêtre immédiate et évaluer les expressions à l'exception du MASSAD?

La réponse sera probablement une magie que je ne sais pas encore, comme? Ce.currentException ou

quelque chose impliquant System.Diagnostics.StackFrame ou qui sait. Quelque chose d'intelligent.

Il existe un moyen de s'y rendre en utilisant le fil de débogueur, mais c'est assez compliqué. Si vous pouvez le prendre et les rendre simples avec un wrapper qui pourrait être une solution.

Était-ce utile?

La solution

Avez-vous essayé de définir le débogueur pour se casser lorsque l'exception est lancée au lieu du moment où elle est non passée par l'utilisateur?

Pour ce faire, accédez au menu principal VS2010 et sélectionnez le menu «débogage» Sélectionnez «Exceptions ...»

Qui soulèvera un dialogue comme:Debug - loading= Exceptions.. menu">

Sélectionnez la colonne lancée

Maintenant, lorsque votre exception est lancée et que vous devriez être en mesure d'évaluer vos variables locales dans la fenêtre immédiate.

Dans l'onglet locaux, je peux voir la variable d'exception $:Local variables contains $exception

Je suis en mesure d'utiliser la variable "$ exception" dans la fenêtre immédiate:Immediate Window accessing $exception

Mise à jour: Également pour faire basculer une gestion des exceptions faciles, je recommande d'utiliser le Extension Visual Studio d'exception Breaker, ce qui vous permet de basculer la rupture sur la gestion des exceptions à partir de la barre d'outils au lieu d'avoir à percer dans le menu de débogage.

Autres conseils

Je ne sais pas pour Visual Studio 2010 mais dans Visual Studio 2012 lorsqu'une exception non perdue se produit, il est montré dans le Locals fenêtre avec le nom $exception.

il y a une propriété qui n'évaluera pas dans la grille immobilière

Si la propriété ne peut pas être évaluée, le débogueur ne vous aidera pas Comme tu l'as vu; Par conséquent, la fenêtre immédiate ferait de même.

J'avais une propriété non valide telle qu'elle lèverait une exception dans VS2010 et ferait planter le débogueur lorsque j'ai tenté de l'évaluer. Nulls étant retournés des propriétés n'était pas gentil pour le débogueur.

Je recommande d'y aller old school sur la question et mettre Trace.write Dans la propriété et ailleurs et surveiller les rapports d'écriture dans la fenêtre de sortie.

Comment tracer et déboguer dans Visual C #

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top