una - El depurador de Visual Studio 2010 pasa por encima de los métodos y no se detiene en los puntos de interrupción
run code visual studio (12)
Mi depurador de Visual Studio 2010 a veces tiene un comportamiento muy extraño ...
A veces no se detiene en los puntos de interrupción, pero cuando se detiene, y quiero entrar en un método, el depurador solo pasa por encima de él. También se ignoran los puntos de interrupción en esos métodos sobrepasados.
Cuando se produce este extraño comportamiento, tampoco se rompe en las excepciones sino que simplemente las ignora.
He intentado reconstruir mi proyecto, restablecer la configuración de Visual Studio y deshabilitar la configuración del depurador como "Romper solo en mi código", pero nada ha funcionado.
¿Cómo resuelvo este problema?
Acabo de encontrar otra razón para el problema, y una solución. Estoy creando una aplicación de Windows Forms usando C ++ en Visual Studio 2010. Estoy usando la biblioteca FreeType y un código que depende de ella y, por diversas razones, este código debe compilarse con la opción "No hay compatibilidad con Common Language Runtime Support" seleccionada (Propiedades -> Propiedades de configuración -> General). No pude obtener puntos de interrupción para ser golpeado en este código no CLR.
La solución es que la aplicación principal debe compilarse con ''Common Language Runtime Support (/ clr)'', NO ''Pure MSIL Common Language Runtime Support) (/ clr: pure)''. Eso solucionó inmediatamente el problema. Ahora puedo depurar y golpear puntos de interrupción en el código no CLR, incluido el código FreeType C.
Aquí hay un par de razones y soluciones para que Visual Studio evite entrar en un método en particular.
- Sólo mi código está habilitado. En ciertas circunstancias, la configuración "Sólo mi código" le impedirá ingresar a un método / propiedad. Para evitar esto, puede desactivar "Solo mi código" en la página de opciones del depurador (Herramientas -> Opciones -> Depurador -> Desmarcar "Solo mi código")
- Los símbolos no se cargan para el método de destino. Si el método de destino forma parte de otra DLL, es posible que los símbolos no se carguen para esa DLL y, por lo tanto, Visual Studio no podrá acceder a ella de forma predeterminada. Para forzar la carga de los símbolos, abra la vista Módulos (Depurador -> Windows -> Módulos), navegue a la DLL que contiene el método, haga clic con el botón derecho y cargue los símbolos.
- El método está marcado explícitamente con un atributo de depurador como
DebuggerNonUserCode
que hace que el depurador pase por encima del método. - El método es en realidad una propiedad u operador y usted tiene habilitada la configuración "Pasar por encima de las propiedades y operadores" (esta es la opción predeterminada). Esto se puede desactivar a través del diálogo de opciones del depurador.
En mi caso fue "Paso sobre propiedades y operadores" en Herramientas -> Opciones -> Depurador. Solo tuve que desmarcar eso y después de que todo estaba bien, pude entrar.
He encontrado la solución del problema y es realmente simple:
En la configuración de compilación de mi solución, la casilla de verificación "Generar" del proyecto donde se encuentran los métodos, que se sobrepasan, no se marcó. Lo comprobé, y ahora todo funciona.
He experimentado lo mismo recientemente. Aunque no estoy seguro de lo que hice exactamente. Intente limpiar físicamente su solución, es decir, elimine todos los directorios bin de todos los proyectos de la solución. Eso suele ayudar a resolver muchos problemas.
Intente deshabilitar la opción "Requerir que el archivo de origen coincida exactamente" en herramientas-> opciones-> depuración-> general.
Lo más importante que se debe verificar es si al intentar colocar un nuevo punto de interrupción dentro del método en el que se niega a intervenir, si el punto de interrupción se rellena de color rojo como los otros, o si está medio lleno o tiene un "aspecto" especial. Si lo hace, pase el cursor sobre el punto de interrupción que creó para averiguar por qué no funciona.
Si el punto de interrupción se ve normal pero aún parece que no puede entrar en el método, intente borrar la caché de instantáneas: http://weblogs.asp.net/mreynolds/archive/2003/08/11/23576.aspx
Otra cosa que debes intentar es asegurarte de que estás usando la DLL que acabas de reconstruir agregando un MessageBox. Mostrar (o algo similar) al método en el que parece que no puedes detenerte, y asegúrate de obtener la casilla .
Luché con esto por un tiempo. Ninguna de las respuestas dadas funcionó para mí. Finalmente lo hice funcionar haciendo lo siguiente:
- Asegúrate de que el proyecto esté en modo de depuración (todos los proyectos)
- Desde Windows, vaya a un símbolo del sistema y asegúrese de ejecutar como administrador
- Navegue a
c:/windows/syswow64/
(o carpeta donde se encuentragacUtil.exe
) - Ejecute el siguiente comando (sustituya la ruta a continuación donde se encuentra su versión de salida de depuración de la DLL).
gacutil /i "C:/Users/John/Documents/Visual Studio 2008/Projects/Project1/Project1/bin/Debug/MyAppDLL.dll"
Debería obtener "El ensamblado se agregó correctamente al caché"
Ahora ejecuta tu proyecto y deberías poder ingresar al código DLL.
Mi problema era simple. Tengo varios proyectos en la solución y solo necesito configurar el proyecto con el que estoy trabajando como Proyecto de inicio como proyecto.
Mi solución fue crear un nuevo proyecto y cargar todos mis archivos .vb en el nuevo proyecto. Resuelto todos mis problemas.
Otra fuente de confusión son los métodos de iteradores que usan el operador de rendimiento de rendimiento porque son reescritos por el compilador de C # de tal manera que entrar en ellos (F11) es una especie de " no-op ".
Debe esperar a que se produzca la iteración para entrar en el código del método.
WAG aquí, pero diría que ha hecho referencia a otro proyecto en su solución BUSCANDO a una dll (project / bin / debug / mydll.dll) en lugar de agregar una "Referencia de proyecto". Si tiene varios proyectos en su solución, elimine TODAS las referencias a cada proyecto. Luego, en el cuadro de diálogo Agregar referencia, haga clic en la pestaña "Agregar referencia del proyecto" y seleccione el proyecto al que desea hacer referencia.
Las referencias del proyecto siempre se actualizan en una nueva construcción. Pero si, por ejemplo, navega a bin / release y agrega una referencia a un dll en ese directorio, cuando cambie al modo de depuración y agregue código e intente depurarlo, la versión anterior del dll se carga en el dominio de aplicaciones y VS no podrá alcanzar ningún punto de interrupción (notará que los puntos de interrupción son círculos vacíos y la información sobre herramientas dirá algo sobre el código que no se está cargando).