2010-04-30 7 views
2

J'utilise le débogueur CLR (version 8, à partir de "Visual Studio 2005") pour déboguer du code C#. Je peux parcourir mon code, mais pour beaucoup de variables, le débogueur ne me montrera pas sa valeur. Autrement dit, si je le tape dans le cadre "Immédiat" ou si je l'ajoute au cadre "Regarder", il est écrit "Impossible d'évaluer l'expression".Débogueur CLR et 'var'

Il semble faire beaucoup pour var variables, mais je le vois aussi pour les paramètres et les propriétés, aussi. Je n'ai pas été capable de comprendre quel est le modèle.

Y at-il une règle pour quand il peut afficher la valeur d'une variable? Y at-il quelque chose que je dois faire à mon code, ou dans mon script de construction, pour rendre le débogueur capable d'afficher des variables? Ou y a-t-il un paramètre de débogueur caché?

+1

Il n'y a pas assez d'informations dans cette question pour risquer un diagnostic. Pouvez-vous nous donner un, deux ou quelques douzaines d'exemples d'expressions qui ne peuvent pas être évaluées? Un petit repro serait génial. –

+2

Courez-vous en mode release? Exécutez votre programme en mode débogage et réessayez. – Steven

Répondre

0

La variable doit être dans la portée à l'endroit où vous avez atteint un point d'arrêt. Autrement dit, si vous cassez une méthode, vous devriez pouvoir voir les paramètres de cette méthode, les variables locales et les variables statiques dans la classe conteneur. En ce qui concerne var, cette "astuce de compilateur" a été introduite en conjonction avec Visual Studio 2008, donc bien que vous puissiez l'utiliser dans des projets .NET 2.0, je ne pense pas que VS2005 puisse le compiler, donc je doute qu'il puisse le déboguer.

+4

'var' indique simplement au compilateur de déduire le type de l'utilisation. Il n'y a aucune trace de 'var' une fois le code compilé, donc je ne vois pas comment cela pourrait affecter le débogage de quelque façon que ce soit. –

+0

Brian: oui, c'était aussi ma façon de penser. De plus, je vois "Impossible d'évaluer l'expression" pour les expressions qui ont évidemment des types très explicites, comme les paramètres et les propriétés. 'var' était juste une idée, car ils semblaient être le cas le plus fréquent que je voyais. – Ken

3

Il manque des informations cruciales à votre question. Reverse-engineering: le mot-clé "var" n'est pas disponible jusqu'à C# version 3, livré avec Visual Studio 2008. L'utilisation d'un ancien débogueur n'est pas une bonne idée, même si ce n'est probablement pas le vrai problème.

Une autre indication est que vous utilisez un débogueur autonome au lieu de celui qui est intégré à Visual Studio. Il est très probable que vous déboguez du code de version, pas du code construit dans la configuration de débogage. Ne pas obtenir d'informations sur les variables et propriétés locales est tout à fait normal dans ce cas, le compilateur JIT les optimise.