Visual Studio 2010 mata (no hay otra palabra) datos en uno de los argumentos de la función en el bloque inseguro. ¿Qué podría causar este error? El siguiente mensaje se muestra por el depurador.
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
curiosidad
fuente
fuente
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
Respuestas:
Vaya a Propiedades del proyecto y en Compilar. Asegúrese de que la casilla de verificación "Optimizar código" esté desmarcada.
Además, configure el menú desplegable "Información de depuración" en "Completo" en las Opciones avanzadas (en la pestaña Compilar).
fuente
También en VS 2015 Community Edition
vaya a Depurar-> Opciones o Herramientas-> Opciones
y marque Depuración-> General-> Suprimir la optimización JIT en la carga del módulo (solo administrado)
fuente
Si compila con optimizaciones habilitadas, se eliminarán muchas variables; por ejemplo:
aquí la variable local
value
normalmente se eliminaría, manteniendo el valor en la pila en su lugar, un poco como si hubiera escrito:Además, si no se utiliza un valor de retorno , se eliminará a través de "pop" (en lugar de almacenarse en un local a través de "stloc", y de nuevo; el local no existirá).
Debido a esto, en tal compilación, el depurador no puede obtener el valor actual de
value
porque no existe , solo existe por un breve instante entreGetValue()
yDoSomething(...)
.Entonces; si quieres depurar ... ¡no uses una versión de lanzamiento! o al menos, deshabilite las optimizaciones mientras depura.
fuente
http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html
Esto funcionó para mí en Visual Studio 2013.
Todo lo que tienes que hacer es..
fuente
Me encontré con esto y estaba ejecutando bajo
Release
configuración deDebug
compilación en lugar de configuración de compilación. Una vez que cambié aDebug
mi variable mostrada en el reloj nuevamente.fuente
En Visual Studio 2017, vaya a Depuración-> Opción, luego verifique Depuración-> general-> y marque esta opción
fuente
Cuando tuve que enfrentar el mismo problema, solo tuve que limpiar mi solución antes de reconstruir. Eso se encargó de mí.
fuente
Con respecto al problema con la propiedad "Optimizar código" SIN COMPROBAR pero el código aún se compila como optimizado: Lo que finalmente me ayudó después de intentarlo todo fue marcar la casilla de verificación "Habilitar depuración de código no administrado" en la misma página de configuración (Propiedades del proyecto - Depuración). No se relaciona directamente con la optimización del código, pero con esto habilitado, VS ya no optimiza mi biblioteca y puedo depurar.
fuente
Enable unmanaged code debugging
. HayEnable native code debugging
, intenté comprobar esto, pero no hizo ninguna diferencia.Me he enfrentado al mismo problema y la solución para mí es cambiar
Solution Configuration
deRelease
aDebug
. Espero eso ayudefuente
En mi caso, estaba trabajando en un proyecto de API web y, aunque el proyecto se configuró correctamente para la depuración completa, todavía veía este error cada vez que me adjuntaba al proceso de IIS que intentaba depurar. Luego me di cuenta de que el perfil de publicación estaba configurado para usar la configuración de lanzamiento. Entonces, un lugar más para verificar es su perfil de publicación si está utilizando la función 'Publicar' de su proyecto de API web dotnet.
fuente
Descubrí que tenía el mismo problema cuando estaba ejecutando un proyecto y depurando al adjuntar a un proceso de IIS. También estaba corriendo en modo de depuración con optimizaciones desactivadas. Si bien pensé que el código se compilaba bien, cuando lo separé e intenté compilar, no se encontró una de las referencias. Esto se debió a otro desarrollador aquí que realizó modificaciones y cambió la ubicación de la referencia. La referencia no apareció con el símbolo de alerta, así que pensé que todo estaba bien hasta que hice la compilación. Una vez arreglada la referencia y funcionando nuevamente, funcionó.
fuente
Como respuesta adicional para quienes experimentan este problema al depurar la aplicación web de un sitio web de Azure:
Al implementar desde GitHub, por ejemplo, el código se compila en el servidor Azure optimizado de manera predeterminada.
Le digo al servidor que compile de forma depurable configurando
SCM_BUILD_ARGS
de/p:Configuration=Debug
Pero hay más opciones. Vea esto: http://azure.microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-azure-web-sites-part-3-multi-instance-environment-and-git / /
fuente
En Visual Studio 2012:
Vaya a las propiedades del proyecto -> Depurar -> Desmarque "Habilitar el proceso de alojamiento de Visual Studio"
fuente
Para las aplicaciones web hay otro problema que es importante y es seleccionar la configuración correcta durante el proceso de publicación de la aplicación.
Puede compilar su aplicación en modo de depuración, pero puede suceder que la publique en modo de lanzamiento, lo que omite el código de manera predeterminada, pero IDE puede confundirlo ya que muestra el modo de depuración mientras el código publicado está en modo de lanzamiento. Puede ver los detalles en la siguiente instantánea:
fuente
Verifique si tiene un atributo Debuggable en su archivo AssemblyInfo. Si es así, elimínelo y reconstruya su solución para ver si las variables locales están disponibles.
Mi atributo debuggable se estableció en: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints que, de acuerdo con este artículo de MSDN, le dice al compilador JIT que use optimizaciones. Eliminé esta línea de mi archivo AssemblyInfo.cs y las variables locales estaban disponibles.
fuente
En Visual Studio 2017 o 2015:
Vaya a la solución, haga clic derecho en la solución, luego seleccione Propiedades-> seleccione toda la Configuración-> Depurar y luego haga clic en Aceptar. Después de esa reconstrucción y ejecución, esta solución funcionó para mí.
fuente
Tuve el mismo problema. Intenté todo lo anterior y descubrí que también tenía que eliminar todo dentro de {PROJECT_ROOT} \ bin \ Release \ netcoreapp2.2 y {PROJECT_ROOT} \ obj \ Release \ netcoreapp2.2 para mi proyecto. Definitivamente está relacionado con la publicación porque, aunque utilizo herramientas de implementación / bitbucket en mi aplicación web de Azure, probé Build >> Publish >> Publish to Azure porque quería inspeccionar qué archivos se implementaron realmente.
fuente
Tuve el mismo problema antes con una aplicación WPF y todas las soluciones aquí NO resolvieron el problema . El problema era que el Módulo ya estaba optimizado, por lo que las siguientes soluciones NO FUNCIONAN (o no son suficientes para resolver el problema):
El módulo todavía está cargado Optimizado. Ver la siguiente captura de pantalla:
Para resolver este problema , debe eliminar el módulo optimizado. Para encontrar la ruta del módulo optimizada, puede usar una herramienta como Process Hacker .
Haga doble clic en su programa en el " Panel de proceso " y luego, en la nueva ventana, abra la pestaña " Ensamblados .NET ". Luego, en la columna " Ruta de imagen nativa ", encontrará todas las rutas de los módulos optimizados . Localice el que desea des-optimizar y elimine la carpeta (vea la captura de pantalla a continuación): (borré el nombre de mi empresa por razones obvias)
Reinicie su aplicación (con la casilla de verificación en el paso 1 marcada correctamente) y debería funcionar.
Nota : El archivo puede estar bloqueado ya que fue abierto por otro proceso, intente cerrar Visual Studio. Si el archivo aún está bloqueado, puede usar un programa como Lock Hunter
fuente