visual sólo studio puede optimizado opción módulo habilitada está encuentra depurador código archivo abrir .net debugging debug-symbols

.net - sólo - no se encuentra el archivo pdb o no se puede abrir visual studio 2017



Depuración del código.NET con el Servidor de símbolos de MS-VS no muestra los valores de la variable (5)

El código del framework .NET está optimizado, por lo que no podrá ver todas las variables, ya que probablemente no existan en el código optimizado. Supongo que está intentando depurar dentro del propio framework .NET. No hay mucho que puedas hacer para desafortunadamente.

Cuando depuro mi código de sitio web ASP.NET utilizando el símbolo de depuración de Microsoft para .NET ... sigo obteniendo este "resultado" tonto para la mayoría de las variables cuando estoy depurando el código de .NET Framework (que por supuesto es proporcionado por el Microsoft Symbol Server, del que le dije a VS2008 que tome la información, desde)

Cannot obtain value of local or argument ''cookie'' as it is not available at this instruction pointer, possibly because it has been optimized away.

Es como si el código que uso está usando código compilado optimizado. Si ese es el caso, ¿puedo decir que NO se optimice? Estoy en la configuración de DEPURACIÓN. Es muy frustrante porque no puedo depurar ... porque no puedo ver / recuperar los valores de las variables locales cuando paso por el código.

¿Alguna pista / pensamiento?


Para una aplicación .Net normal, puede deshabilitar el uso de optimizaciones JIT con un archivo .INI junto al binario inicial. Aquí hay un enlace a cómo se logra esto

http://blogs.msdn.com/jaredpar/archive/2008/08/29/disabling-jit-optimizations-while-debugging.aspx

La depuración ASP.Net es un poco diferente y no estoy seguro si esto funcionará para usted. Si está depurando localmente utilizando el servidor web liviano (cassini), puede aplicar este truco a la propia Cassini. Si está depurando directamente en un servidor web dentro de IIS, no sé cómo hacer que funcione este truco, pero espero que lo guíe en la dirección correcta.


Finalmente, esta solución funcionó para mí cuando se adjuntó a aspnet_wp.exe Visual Studio 2008, .NET framework 2.0: vaya a las propiedades del proyecto, en la pestaña Generar, botón Avanzado -> configure la Información de depuración de salida en "lleno". Espero que esto ayude a alguien.


Shawn Burke describió un método para deshabilitar esto en su blog .

En primer lugar, cree una CMD que cargará Visual Studio sin optimización JIT.

set COMPLUS_ZapDisable=1 cd /d "%ProgramFiles%/Microsoft Visual Studio 9.0/Common7/ide/" start devenv.exe exit

Una vez en su proyecto de Visual Studio, realice los siguientes pasos:

1) Haga clic con el botón derecho en su archivo de proyecto y elija "Propiedades"

2) Elija la pestaña "Depurar" y desmarque "Habilitar el proceso de alojamiento de Visual Studio"

3) Inicie su aplicación en el depurador.


Después de una gran cantidad de investigaciones, pude encontrar la manera de hacer que esta técnica "COMPLUS_ZapDisable" funcione cuando se conecta a una aplicación alojada en IIS en IIS7 / Windows 7 x64.

En mi caso, estoy usando símbolos construidos por Reflector Pro, aunque supongo que también funcionarán para los símbolos de Microsoft que el OP preguntó.

El truco está en encontrar el lugar correcto para establecer esa variable de entorno para que su w3wp.exe se inicie con esa configuración habilitada. Para hacer esto, agregue una clave de cadena llamada "COMPLUS_ZAPDISABLE" a su registro en "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Session Manager / Environment". Establezca el valor clave en "1", y eso debería ser el truco. No hagas esto en producción =)

Felicitaciones a Clive Tong, el autor de este post de Red Gate, por apuntarme en la dirección correcta.