Visual Studio 2010 tue (il n'y a pas d'autre mot) des données dans l'un des arguments de la fonction dans le bloc dangereux. 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.
c#
visual-studio-2010
debugging
curiosité
la source
la source
Cannot obtain value of local or argument '<this>' as it is not available at this instruction pointer, possibly because it has been optimized away. System.Threading.Tasks.TaskExceptionHolder
Réponses:
Allez dans Propriétés du projet et sous Créer Assurez-vous que la case "Optimiser le code" n'est pas cochée.
Définissez également la liste déroulante "Informations de débogage" sur "Complète" dans les options avancées (sous l'onglet Création).
la source
Aussi dans VS 2015 Community Edition
allez dans Debug-> Options or Tools-> Options
et vérifiez Débogage-> Général-> Supprimer l'optimisation JIT sur la charge du module (Géré uniquement)
la source
Si vous compilez avec les optimisations activées, de nombreuses variables seront supprimées; par exemple:
ici, la variable locale
value
serait généralement supprimée, en conservant la valeur sur la pile à la place - un peu comme si vous aviez écrit: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).
Pour cette raison, dans une telle version, le débogueur ne peut pas obtenir la valeur actuelle de
value
car elle n'existe pas - elle n'existe que pour le bref instant entreGetValue()
etDoSomething(...)
.Alors; si vous voulez déboguer ... n'utilisez pas de build de version! ou au moins, désactivez les optimisations pendant le débogage.
la source
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..
la source
Je suis juste tombé sur cela et je courais sous la
Release
configuration deDebug
build au lieu de la configuration de build. Une fois que je suis revenu àDebug
ma variable affichée à nouveau dans la montre.la source
Dans Visual Studio 2017, passez à Debug-> Option, puis vérifiez Debugging-> general-> et cochez cette option
la source
Lorsque j'ai été confronté au même problème, je devais simplement nettoyer ma solution avant de reconstruire. Cela a pris soin de moi.
la source
Concernant le problème avec la propriété "Optimiser le code" non vérifiée mais le code toujours compilé comme optimisé: Ce qui m'a finalement aidé après avoir tout essayé, cochez la case "Activer le débogage du code non managé" 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.
la source
Enable unmanaged code debugging
. Il y aEnable native code debugging
, j'ai essayé de vérifier cela mais cela n'a fait aucune différence.J'ai rencontré le même problème et la solution pour moi est de passer
Solution Configuration
deRelease
àDebug
. J'espère que ça aidela source
Dans mon cas, je travaillais sur un projet d'API Web et bien que le projet ait été correctement défini pour un débogage complet, je voyais toujours cette erreur chaque fois que je me connectais au processus IIS que j'essayais de déboguer. Ensuite, j'ai réalisé que le profil de publication était défini pour utiliser la configuration Release. Donc, un autre endroit à vérifier est votre profil de publication si vous utilisez la fonction «Publier» de votre projet API web dotnet.
la source
J'ai constaté que j'avais le même problème lors de l'exécution d'un projet et du débogage en l'attachant à un processus IIS. J'exécutais également en mode débogage avec les optimisations désactivées. Alors que je pensais que le code s'était bien compilé, lorsque je me suis détaché et j'ai essayé de compiler, aucune des références n'a é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'est pas apparue 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 fixée et exécutée à nouveau, cela a fonctionné.
la source
Comme 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 définissant
SCM_BUILD_ARGS
sur/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 /
la source
Dans Visual Studio 2012:
Allez dans les propriétés du projet -> Déboguer -> Décochez "Activer le processus d'hébergement Visual Studio"
la source
Pour les applications Web, un autre problème est important et il s'agit de sélectionner la configuration correcte pendant le processus de publication de l'application.
Vous pouvez créer votre application en mode débogage, mais il se peut que vous la publiiez en mode de publication qui supprime le code par défaut, mais l'EDI peut vous induire en erreur car elle affiche le mode de débogage alors que le code publié est en mode de publication. Vous pouvez voir les détails dans l'instantané ci-dessous:
la source
Vérifiez si vous avez un attribut Debuggable dans votre fichier AssemblyInfo. S'il existe, supprimez-le et reconstruisez votre solution pour voir si les variables locales deviennent 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.
la source
Dans Visual Studio 2017 ou 2015:
Accédez à la solution, cliquez avec le bouton droit sur la solution, puis sélectionnez Propriétés-> sélectionnez toutes les configurations-> Débogage, puis cliquez sur OK. Après cette reconstruction et cette exécution, cette solution a fonctionné pour moi.
la source
J'ai eu le même problème. J'ai essayé tout ce qui précède et j'ai constaté que je devais également supprimer tout ce qui se trouvait dans {PROJECT_ROOT} \ bin \ Release \ netcoreapp2.2 et {PROJECT_ROOT} \ obj \ Release \ netcoreapp2.2 pour mon projet. C'est définitivement lié à la publication parce que bien que j'utilise des outils de déploiement / bitbucket sur mon Azure Web App, j'ai essayé la construction >> Publier >> Publier sur Azure parce que je voulais inspecter les fichiers qui étaient réellement déployés.
la source
A eu le même problème avant avec une application WPF et toutes les solutions ici n'ont PAS résolu le problème . Le problème était que le module était déjà optimisé, donc les solutions suivantes NE FONCTIONNENT PAS (ou ne suffisent pas à résoudre le problème):
Le module est toujours chargé Optimisé. Voir la capture d'écran suivante:
Pour résoudre ce problème, vous devez supprimer le module optimisé. Pour trouver le chemin de module optimisé, vous pouvez utiliser un outil comme Process Hacker .
Double-cliquez sur votre programme dans le " panneau Processus " puis dans la nouvelle fenêtre ouvrez l'onglet " Assemblages .NET ". Ensuite, dans la colonne " Chemin de l'image native ", vous trouverez tous les chemins des modules optimisés . Localisez celui que vous souhaitez désoptimiser et supprimez le dossier (voir capture d'écran ci-dessous): (J'ai brouillé le nom de mon entreprise pour des raisons évidentes)
Redémarrez votre application (avec la case à cocher à l'étape 1 correctement cochée) et cela devrait fonctionner.
Remarque : Le fichier peut être verrouillé car il a été ouvert par un autre processus, essayez de fermer Visual Studio. Si le fichier est toujours verrouillé, vous pouvez utiliser un programme comme Lock Hunter
la source