web-dev-qa-db-fra.com

La variable n'existe pas dans le contexte actuel lors du débogage

J'ai inséré deux variables temporaires et je veux voir leurs valeurs, mais je ne peux pas. Je pourrais le résoudre en le plaçant ailleurs, mais je suis intéressé par la raison de ce comportement.

   public float Value
    {
        get
        {
            float result = Memory.ReadFloat(Address);

            double Radian = Math.Round(result, 2); // **BREAK POINT HERE**
            double Degree = Math.Round(Math.Round((double)(result * 180 / Math.PI)), 2); // **BREAK POINT HERE**

            return result; // **BREAK POINT HERE**
        }
    }

Je brise les trois points, mais je ne parviens pas à faire afficher les valeurs par Visual Studio 2012. Seul le résultat apparaîtra dans la fenêtre locale, il n'y a pas de variable appelée Radian ou Degré.

Si j'ajoute une montre pour la variable Radian par exemple, je reçois ce message avec une icône en forme de croix rouge:

Radian - Le nom 'Radian' n'existe pas dans le contexte actuel

24
Dominik Antal

Il est possible que les variables locales aient été optimisées par le compilateur JIT. Puisque vous utilisez Visual Studio, vous pourrez peut-être passer de la configuration à Debug et à la reconstruction.

Sinon, vous pouvez configurer le compilateur JIT pour qu'il désactive les optimisations et génère des informations de suivi - voir ici pour savoir comment configurer la configuration . Cela devrait vous permettre de voir la variable locale lorsque vous attachez le débogueur au processus.

59
Lee

J'ai rencontré un autre scénario dans VS2012 dans lequel les variables "disparaissent" en mode débogage:

assurez-vous de ne pas avoir ceci:

if(false)
   {
   .
   }
else
   {
   //Code here will be optimized and variables will not be available.
   }
20
ishayle

Si vous essayez de déboguer dans une version release (mode release au lieu du mode debug), vous obtiendrez cette erreur. Changez la configuration de votre solution en Debug (tout processeur) et vous pourrez voir les valeurs des variables dans la fenêtre immédiate.

7
Chewdoggie

J’ai modifié la configuration de ma solution en Debug (tout processeur), mais ce n’était pas le problème. Après la mise à niveau vers Visual Studio 2017, je pensais être dans Debug, mais il y avait une autre étape simple (mais importante). (Et c'est probablement évident pour la plupart des gens, mais je l'ai raté.) Lorsque «Configurations de solutions» est défini sur «Débogage», je devais aussi cliquer sur la flèche vers le bas en regard de «Débogage» et sélectionner «Gestionnaire de configuration…», puis dans la fenêtre correspondante. La fenêtre contextuelle «Configuration» était toujours réglée sur «Communiquer» - je devais la changer en «Déboguer» et cliquer sur le bouton «Fermer». Ré-exécuter à partir de là m'a permis de visualiser toutes les variables lors du débogage.

0
Crazy Cat