2009-03-09 8 views
11

Je suis en train de portions de débogage de l'application actuelle je travaille, mais quand je tente de vérifier la valeur d'une propriété variable/je reçois l'erreur:Impossible d'afficher les valeurs des variables pendant le débogage

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

Ceci est juste un projet ASP.NET standard. Dans certaines parties de l'application, je peux voir les propriétés et les variables parfaitement bien. Je n'ai pas compris ce qui est différent sur les blocs de code que je peux et ne peux pas voir les valeurs des variables.

Répondre

10

Le problème était documented sur un blog MSDN, comme étant une limitation de la taille de certains types dans certaines situations, plus de détails dans le lien. Je crois que c'était 256 octets et/ou la taille totale/nombre du nombre d'arguments passés à une fonction. Désolé de dire qu'il ne semble pas y avoir de solution miracle, mais j'espère que l'entrée du blog MSDN vous aidera à trouver un moyen de résoudre votre problème.

+1

Je doute que la limitation de 256 octets (ou le nombre d'arguments) est la raison la plus fréquente de cette erreur. L'article référencé dans l'article lié, [Rules of Funceval] (http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx) donne un certain nombre d'autres raisons pour lesquelles cette peut arriver. – kristianp

+0

C'était aussi dans VS2008 RTM, donc SP1 pourrait l'avoir corrigé. Aussi je ne sais pas qu'il existe même dans VS2010. – CertifiedCrazy

+0

FYI, même problème existe dans VS2010. –

0

Est-ce que vous faites des versions de version? Essayez de changer la configuration pour "déboguer" et voir si elle s'améliore.

+0

Non, la configuration de la solution est définie sur "Débogage". –

+0

Assurez-vous que tous les projets faisant partie de la configuration de la solution "Débogage" sont marqués comme tels. Le débogage est juste moniker, et il est possible que * Projects * soit défini sur "Release" dans une configuration "Debug" large. Déroutant? Oui. –

+0

Je suis passé par chacun de mes projets. Ils sont tous définis sur "Active (Debug)" mais je les ai tous changés en "Debug". Toujours pas de chance. –

0

Nous avons le même problème dans deux de nos contrôles utilisateur WinForm. Dans les deux cas, les contrôles utilisateur contiennent beaucoup de logique métier (2000 et 3000 lignes de code respectivement) et utilisent plusieurs objets assez lourds (ils ont plus de 30 propriétés qui sont automatiquement remplies depuis la base de données la première fois que l'une des propriétés sont accédés). Lorsque vous essayez de parcourir les méthodes de validation et d'enregistrement (un peu compliquées), vous obtenez le même message lorsque vous tentez d'accéder aux propriétés de l'objet. Nous sommes arrivés à la conclusion que la taille et la complexité du contrôle utilisateur, combinées à la taille et la complexité des objets utilisés et à l'accès conditionnel à la base de données deviennent trop importantes pour le débogueur et que nous devrions probablement en faire refactoring majeur pour déplacer la majeure partie de la logique métier hors du contrôle de l'utilisateur. Il serait intéressant de savoir si votre problème provient du même genre de situation et si le fait de faire ce genre de refactoring fait vraiment une différence (nous n'avons pas eu le temps et/ou le courage :) de le faire).

2

Cet article, Rules of Funceval donne un certain nombre de raisons pour lesquelles cela peut se produire. Si le débogage est activé et que l'optimisation est déjà désactivée, il ne semble pas y avoir grand-chose d'autre à faire pour résoudre ce problème.

+0

Bel article, merci! –

Questions connexes