Evaluación:
En .NET, “la función de evaluación (funceval)” es la capacidad de CLR para inyectar algo de llamada arbitraria mientras que el depurador se detiene en algún lugar. Funceval se hace cargo del hilo elegido por el depurador para ejecutar el método solicitado. Una vez que termina funceval, se activa un evento de depuración. Técnicamente, CLR ha definido formas para que el depurador emita un funceval.
CLR permite iniciar funceval solo en los subprocesos que están en el punto seguro del GC (es decir, cuando el subproceso no bloqueará GC) y Funceval Safe (FESafe) punto (es decir, donde CLR puede hacer el secuestro para el funceval). juntos. Por lo tanto, los posibles escenarios para el CLR, un hilo deben ser:
se detuvo en código administrado (y en un punto seguro GC): Esto implica que no podemos hacer una funceval en código nativo. Como el código nativo está fuera del control del CLR, no puede configurar el funceval.
detenido en una primera oportunidad o excepción administrada no controlada (y en un punto seguro de GC): es decir, en el momento de la excepción, inspeccionar tanto como sea posible para determinar por qué ocurrió esa excepción. (Por ejemplo: depurador puede tratar de evaluar y ver la propiedad de mensajes en la excepción planteada.)
, formas comunes globales para detener en código administrado incluyen detenerse en un punto de interrupción, paso, llamada Debugger.Break, interceptando una excepción , o en un comienzo de hilo. Esto ayuda a evaluar el método y las expresiones.
Resoluciones posibles: Según la evaluación, si el subproceso no está en los puntos FESafe y GCSafe, CLR no podrá secuestrar el subproceso para iniciar funceval.En general, siguiendo ayuda a asegurarse de funceval inicia cuando se espera:
Paso # 1:
Asegúrese de que usted no está tratando de depurar un “Release” de generación. La versión está completamente optimizada y, por lo tanto, dará lugar al error en la discusión. Al usar la barra de herramientas Estándar o Configuration Manager, puede alternar entre la versión de Debug &.
Paso # 2:
Si sigue apareciendo el error, la opción de depuración puede estar configurado para la optimización. Verificar & Desactive la casilla “optimizar el código” propiedad bajo el proyecto “Propiedades”:
Haga clic derecho en el proyecto Seleccione la opción “Propiedades” vaya a “construir” ficha Desactive la casilla de verificación “Optimizar el código”
Paso # 3:
Si aún obtiene el error, el modo de información de depuración podría ser incorrecto. Verificar & otra vez en “completo” en “Avanzada la configuración de creación”:
Haga clic derecho en el proyecto Seleccione la opción “Propiedades” vaya a “construir” pestaña Haga clic en “Opciones avanzadas” botón Set “información de depuración” como “ completa”
Paso # 4:
Si continúa teniendo el problema, intente lo siguiente:
hacer un‘limpio’& luego un‘Reconstruir’de su solución f ile Al depurar: Ir a la ventana de módulos (Menú VS -> Depurar -> Windows -> Módulos) Busque su ensamblaje en la lista de módulos cargados. Compruebe la ruta de la lista contra el conjunto cargado es lo que se espera que sea Compruebe la fecha y hora de modificación del archivo para confirmar que el montaje fue en realidad reconstruida Comprobar si el módulo cargado está optimizado o no
Conclusión:
No se trata de un error, sino de una información basada en ciertas configuraciones y diseñada en función de cómo funciona .NET.
¿Ha encontrado una solución a este problema? –
No creo que la respuesta seleccionada sea útil. Cuando tengas la oportunidad, verifica la respuesta que dejó unos meses más tarde "Nadie". Hacerlo ayudará a aquellos que buscan resolver su pregunta original. – Catskul
Estaba depurando en modo de lanzamiento (sonrojado). La respuesta de Lamar me hizo verificar. – mayu