Visual Studio 2010 supprime (il n'y a pas d'autre mot) des données dans l'un des arguments de fonctions dans un bloc non sécurisé . Qu'est-ce qui pourrait provoquer cette erreur? Le message suivant s'affiche par le débogueur.
Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.
Cliquez sur Propriétés du projet et sous Génération. Assurez-vous que la case à cocher "Optimiser le code" est décochée.
Définissez également le menu déroulant "Informations de débogage" sur "Complet" dans les Options avancées (onglet Sous Construction).
AussiIn VS 2015 Community Edition
allez dans Debug-> Options ou Outils-> Options
et vérifiez Débogage-> Général-> Supprimer l'optimisation JIT lors du chargement du module (Géré uniquement)
Si vous compilez avec les optimisations activées, de nombreuses variables seront supprimées. par exemple:
SomeType value = GetValue();
DoSomething(value);
ici, la variable locale value
serait généralement supprimée, en conservant la valeur sur la pile - un peu comme si vous aviez écrit:
DoSomething(GetValue());
De plus, si une valeur de retour n'est pas utilisée du tout, elle sera supprimée via "pop" (plutôt que stockée dans un local via "stloc", et encore; le local n'existera pas).
De ce fait, dans une telle construction, le débogueur ne peut pas obtenir la valeur actuelle de value
car il n'existe pas - il n'existe que pour le bref instant entre GetValue()
et DoSomething(...)
.
Alors; si vous voulez déboguer ... n'utilisez pas de version release! ou du moins, désactivez les optimisations pendant le débogage.
http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html
Cela a fonctionné pour moi dans Visual Studio 2013.
Tout ce que tu dois faire est..
Je viens de rencontrer cela et je courais sous Release
build configuration au lieu de Debug
build configuration. Une fois que je suis revenu à Debug
, ma variable a de nouveau été affichée dans la montre.
Face au même problème, je devais simplement nettoyer ma solution avant de la reconstruire. Cela a pris soin de moi pour moi.
En ce qui concerne le problème de non-vérification de la propriété "Optimiser le code", le code compilant toujours comme optimisé: ce qui m'a finalement aidé après avoir tout essayé était de cocher la case "Activer le débogage de code non géré" sur la même page de paramètres (Propriétés du projet - Débogage). Cela ne concerne pas directement l'optimisation du code, mais avec cette option activée, VS n'optimise plus ma bibliothèque et je peux déboguer.
J'ai fait face au même problème et la solution pour moi est de changer Solution Configuration
de Release
à Debug
. J'espère que ça aide
J'ai constaté que j'avais le même problème lorsque j'exécutais un projet et que je procédais au débogage en le rattachant à un processus IIS. J'exécutais également en mode débogage avec les optimisations désactivées. Alors que je pensais que le code était bien compilé, lorsque je me suis détaché et que j'ai essayé de compiler, une des références n'a pas été trouvée. Cela était dû à un autre développeur ici qui a apporté des modifications et changé l'emplacement de la référence. La référence n'apparaissant pas avec le symbole d'alerte, j'ai donc pensé que tout allait bien jusqu'à ce que je fasse la compilation. Une fois la référence corrigée et le fonctionnement en cours, cela a fonctionné.
Dans mon cas, je travaillais sur un projet API Web et bien que le projet soit correctement configuré pour le débogage complet, je voyais toujours cette erreur chaque fois que je me connectais au processus IIS que je tentais de déboguer. Ensuite, j'ai réalisé que le profil de publication était configuré pour utiliser la configuration de la version. Il est donc utile de vérifier votre profil de publication si vous utilisez la fonctionnalité "Publier" de votre projet API Web .NET.
En guise de réponse supplémentaire pour ceux qui rencontrent ce problème lors du débogage d'une application Web de sites Web Azure:
Lors du déploiement à partir de GitHub, par exemple, le code est compilé dans le serveur Azure optimisé par défaut.
Je dis au serveur de compiler de manière débogable en mettant SCM_BUILD_ARGS
à /p:Configuration=Debug
mais il y a plus d'options. Voir ceci: http://Azure.Microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-Azure-web-sites-part-3-multi-instance- environment-and-git/
J'ai eu le même problème. J'ai essayé tout ce qui précède et j'ai trouvé que je devais aussi tout supprimer à l'intérieur de {PROJECT_ROOT}\bin\Release\netcoreapp2.2 et de {PROJECT_ROOT}\obj\Release\netcoreapp2.2 pour mon projet. Il est définitivement lié à la publication car bien que j'utilise les outils de déploiement/bitbucket sur mon application Web Azure, j'ai quand même essayé Générer >> Publier >> Publier vers Azure, car je souhaitais inspecter les fichiers effectivement déployés.
Dans Visual Studio 2012:
Allez dans les propriétés du projet -> Debug -> Décochez "Activer le processus d'hébergement Visual Studio"
Dans Visual Studio 2017 ou 2015:
Allez dans la solution cliquez avec le bouton droit de la souris sur la solution, puis sélectionnez Propriétés-> sélectionnez toute la configuration-> débogage, puis cliquez sur OK . Après cette reconstruction, cette solution a fonctionné pour moi.
Vérifiez si vous avez un attribut Debuggable dans votre fichier AssemblyInfo. Si tel est le cas, supprimez-le et reconstruisez votre solution pour voir si les variables locales sont disponibles.
Mon attribut debuggable a été défini sur: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints qui, selon cet article MSDN , indique au compilateur JIT d'utiliser les optimisations. J'ai supprimé cette ligne de mon fichier AssemblyInfo.cs et les variables locales étaient disponibles.