Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Texto completo del mensaje: el proceso de destino salió con el código "código" al evaluar la función "function".
Para que sea más fácil inspeccionar el estado de los objetos .NET, el depurador fuerza automáticamente al proceso depurado a ejecutar otro código (normalmente los métodos y ToString funciones del captador de propiedades). En la mayoría de los escenarios, estas funciones se completan correctamente o lanzan excepciones que el depurador puede capturar. Sin embargo, hay algunas circunstancias en las que no se pueden detectar excepciones porque cruzan los límites del kernel, requieren bombeo de mensajes de usuario o son irrecuperables. Como resultado, un método getter o ToString de propiedad que ejecuta código que finaliza explícitamente el proceso (por ejemplo, llama a ExitProcess()) o produce una excepción no controlada que no se puede detectar (por ejemplo, StackOverflowException) finaliza el proceso depurado y finaliza la sesión de depuración. Si encuentra este mensaje de error, esto ha ocurrido.
Una razón común para este problema es que cuando el depurador evalúa una propiedad que se llama a sí misma, podría resultar en una excepción por desbordamiento de pila. La excepción por desbordamiento de pila no puede ser recuperada y el proceso de destino termina.
Para corregir este error
Hay dos soluciones posibles para este problema.
Solución 1: Impedir que el depurador llame a la propiedad getter o al método ToString
El mensaje de error muestra el nombre de la función a la que el depurador intentó llamar. Con el nombre de la función, puede intentar volver a evaluar esa función desde la ventana Inmediato para depurar la evaluación. La depuración es posible al evaluar desde la ventana Inmediato porque, a diferencia de las evaluaciones implícitas desde las ventanas de Automáticos/Locales/Observador, el depurador se detiene en excepciones no controladas.
Si puede modificar esta función, puede impedir que el depurador llame al accesor de propiedad o al método ToString. Pruebe una de las siguientes opciones:
Cambie el método a algún otro tipo de código además de un captador de propiedades o al método ToString y se resuelva el problema.
O bien:
(Para
ToString) Defina unDebuggerDisplayatributo en el tipo y puede hacer que el depurador evalúe algo distinto deToString.O bien:
(Para un captador de propiedades) Coloque el atributo
[System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)]en la propiedad. Esto puede ser útil si tiene un método que necesita permanecer una propiedad por motivos de compatibilidad de API, pero realmente debe ser un método.
Si no puede modificar este método, es posible que pueda detener el proceso objetivo en una instrucción diferente y volver a intentar la evaluación.
Solución 2: Deshabilitar toda la evaluación implícita
Si las soluciones anteriores no corrigen el problema, puede deshabilitar la característica Habilitar evaluación de propiedades.
Abra el panel Herramientas>Opciones y expanda la sección Todos los ajustes>Depuración>General. Desactive la casilla Habilitar evaluación de propiedades y otras llamadas a funciones implícitas .
Abra el cuadro de diálogo Opciones de herramientas> y expanda la sección Depuración>. Desactive la casilla Habilitar evaluación de propiedades y otras llamadas a funciones implícitas .
Este cambio deshabilita la mayoría de las evaluaciones de funciones implícitas y debe resolver el problema.