47 votes

Que "Ne peut évaluer une expression parce que le code de la méthode actuelle est optimisé" signifier?

J'ai écrit un peu de code avec beaucoup de récursivité, qui prend un peu de temps pour terminer. Chaque fois que je "pause" de la course pour regarder ce qu'il se passe j'obtiens:

Ne peut pas évaluer l'expression, car le code de la méthode actuelle est optimisé.

Je crois comprendre ce que cela signifie. Cependant, ce qui m'intrigue, c'est qu'après que j'ai frappé étape, le code n'est pas "optimisé", et de plus, je peux regarder mes variables. Comment est-ce possible? Comment le code peut-il retourner en arrière et vient entre optimisés et non optimzed code?

44voto

No one Points 531

Tant que la ligne Debug.Break () se trouve en haut de la pile d'appels, vous ne pouvez pas évaluer d'expressions. C'est parce que cette ligne est optimisée. Appuyez sur F10 pour passer à la ligne suivante - une ligne de code valide - et la montre fonctionnera.

27voto

Nescio Points 12613

Le Débogueur utilise FuncEval pour vous permettre de "regarder" des variables. FuncEval nécessite threads d'être arrêté dans le code managé à un GarbageCollector point fort. Manuellement "une pause" la course à l'IDE causes de tous les threads d'arrêter dès que possible. Votre très récursive code aura tendance à s'arrêter à un point dangereux. Par conséquent, le débogueur est pas en mesure d'évaluer des expressions.

En appuyant sur la touche F10 va passer à la prochaine Funceval point Fort et permettra l'évaluation de la fonction.

Pour plus d'informations, revoir les règles de FuncEval.

27voto

Lamar Points 3981

Vous essayez probablement de déboguer votre application en mode publication au lieu du mode débogage ou vous avez des optimisations activées dans vos paramètres de compilation.

Lorsque le code est compilé avec des optimisations, certaines variables sont supprimées une fois qu'elles ne sont plus utilisées dans la fonction. C'est pourquoi vous recevez ce message. En mode débogage avec les optimisations désactivées, vous ne devriez pas avoir cette erreur.

7voto

Ralph177 Points 51

Cela m'a rendu fou. J'ai essayé d'attacher avec le code géré et natif - no go.

Cela a fonctionné pour moi et j'ai finalement pu évaluer toutes les expressions:

  • Allez dans Projet / Propriétés
  • Sélectionnez l'onglet Build et cliquez sur Advanced ...
  • Assurez-vous que les informations de débogage sont définies sur "complet" (pas uniquement sur pdb)
  • Déboguer votre projet - le tour est joué!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X