.net - symbolic - ''Step Into'' de repente no funciona en Visual Studio
qué es un debugger o depurador (11)
¿El proyecto WCF también es una aplicación web? ¿La depuración de ASP.NET está habilitada? (haga clic derecho en el proyecto WCF, vaya a Propiedades | Web )
También he tenido que suceder esto con proyectos cuando las referencias están en mal estado: asegúrese de que la referencia de la aplicación web sea la misma copia del proyecto que la de la solución.
Compruebe el administrador de configuración (en el Explorador de soluciones , haga clic con el botón derecho en la solución | Configuration Manager ) y asegúrese de que ambos proyectos estén en desarrollo.
A veces, el archivo
.suo
se corrompe y puedes obtener todo tipo de comportamiento extraño. Puedes intentar eliminarlo (haz una copia de seguridad si estás paranoico, mira el archivo suo malvado - luchando y ganando con Visual Studio ).
De repente, me encontré con un problema donde no puedo entrar en ningún código mediante la depuración en Visual Studio. El paso adelante funciona bien, pero se niega a entrar en ( F11 ) cualquiera de mis códigos. Esto estaba funcionando antes, ahora de repente no.
He intentado algunas cosas a continuación, pero todavía no tuve éxito:
Eliminar todos los archivos bin en cada proyecto en mi solución, solución limpia, solución de reconstrucción.
Desarrollar proyectos en soluciones indivdualy
Reiniciar la máquina
Es una ASP.NET C# que consume un servicio WCF localmente. Está en modo de depuración. Tengo un punto de interrupción establecido en la página que consume el servicio. El punto de inflexión llega, pero no entrará en el código de servicio.
El sitio ASP.NET y el código de servicio están todos en la misma solución. Esto de repente no funciona, funcionó antes.
¿Como puedo solucionar este problema?
Agregar un punto de interrupción al proyecto de servicio recibo una advertencia:
Breakpoint no será golpeado actualmente. No se han cargado símbolos para este documento.
Eliminé todas las carpetas bin para todos los proyectos y las reconstruí una a una. Todos tuvieron éxito, pero aún estoy obteniendo los símbolos que no se cargarán en ningún punto de interrupción que ponga en ningún proyecto en la solución que no sea el proyecto ASP.NET donde funciona el punto de interrupción. Pude depurar el paso en todos los proyectos antes, esto es algo repentino.
Información de la ventana de salida ...
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/SMDiagnostics/v4.0_4.0.0.0__b77a5c561934e089/SMDiagnostics.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.DurableInstancing/v4.0_4.0.0.0__31bf3856ad364e35/System.Runtime.DurableInstancing.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Xaml.Hosting/v4.0_4.0.0.0__31bf3856ad364e35/System.Xaml.Hosting.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/2d49cf50/14eee2cf/App_Web_jmow15fw.dll'', Symbols loaded.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.WorkflowServices/v4.0_4.0.0.0__31bf3856ad364e35/System.WorkflowServices.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Web/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Discovery/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Discovery.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Activities/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Activities.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Routing/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Routing.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Channels/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Channels.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
''WebDev.WebServer40.EXE'' (Managed (v4.0.30319)): Loaded ''C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.IdentityModel/v4.0_4.0.0.0__b77a5c561934e089/System.IdentityModel.dll'', Skipped loading symbols. Module is optimized and the debugger option ''Just My Code'' is enabled.
Con Visual Studio cerrado:
- Elimine el archivo suo de la solución (contiene información de depuración, configuraciones de usuario como puntos de interrupción, marcadores y otras configuraciones de usuario).
- Eliminar los archivos de caché de Visual Studio (ver a continuación)
- Elimine todos los archivos temporales (un cambio de VS9 a VS10 es que VS10 usa la carpeta temporal)
- Elimine manualmente todas las carpetas obj y bin utilizando Windows Explorer.
Abra Visual Studio y reconstruya todo. Esto siempre funciona Ver C # VS2010 Error al ingresar al modo de interrupción .
Para referencia:
Private Sub ClearVS9
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "/Microsoft/VisualStudio/9.0/ProjectAssemblies")
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "/Microsoft/VisualStudio/9.0/Recent")
ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "/Local Settings/Application Data/ApplicationHistory")
ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "/Local Settings/Application Data/Microsoft/VisualStudio/9.0/ProjectAssemblies")
ClearFolder(oShell.ExpandEnvironmentStrings("%WINDIR%") & "/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files")
End Sub
Private Sub ClearVS10
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "/Local/Microsoft/WebsiteCache")
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "/Local/Microsoft/VisualStudio/10.0/ProjectAssemblies")
End Sub
Ver el enlace El archivo suo malvado - luchando y ganando con Visual Studio mencionado por JMarsch.
En función de lo que he leído y entendido, debe buscar el siguiente archivo:
Project''s Assembly Name.pdb en el directorio bin. Si no lo ves, no se está construyendo. Vea mis comentarios sobre la configuración de la información de depuración como completa, y Opciones / Depuración / Símbolos.
Establezca la salida de compilación del proyecto en detallado o detallado (Herramientas / Opciones / Proyectos y soluciones / Compilar y ejecutar / MSBuild project build output viewbosity).
Busque ciertas tareas con este archivo (es decir, AssemblyName.pdb), elimine, copie, etc., y vea si puede averiguar si está (intentando) eliminar el archivo pdb, desde donde hace referencia (dll / exe) donde está poniéndolo, copiándolo, etc.
Si no se está creando, solo verá las tareas de eliminación. Si es así, verá tareas de copia y referencia. Estas rutas de copia y referencia le dirán dónde necesita apuntar la consola de los módulos de ese ensamblaje (AssemblyName.exe) para obtener su archivo de símbolos (es decir, dónde se copió ese archivo pdb).
En mi caso, ejecutaba una aplicación web desde Visual Studio. El ensamblado que estaba tratando estaba referenciado desde una ubicación en mi sistema de archivos habitual, pero en el tiempo de ejecución se estaba cargando desde el GAC. Siempre pensé que .NET intentaba cargar desde la papelera local primero y luego con GAC, pero supongo que no. De todos modos, no fue capaz de encontrar los símbolos de depuración .pdb para la versión en el GAC y es por eso que no pude intervenir. Una vez que actualicé el ensamblado en el GAC y proporcioné el archivo .pdb, funcionó.
En mi caso, en VS2008, verificando la opción "Habilitar la depuración del código no administrado" en Propiedades del proyecto | Depurar hizo el truco. No sé por qué funcionó ya que todo el código del proyecto está en vb.net.
En versiones posteriores, esta opción se ha renombrado como "Habilitar la depuración del código nativo".
En mi caso, estaba entrando en un método que produjo el retorno de un IEnumerable
. En esta situación, F11 puede omitir el método hasta que se IEnumerable
, ya que su ejecución se aplaza hasta ese momento.
En mi caso, estaba tratando de entrar en un método de servicio web y no estaba funcionando. Comencé a trabajar después de haber resuelto una instancia del servicio usando Unity.
Más información aquí: Resolución de instancias de tipos usando la unidad
Prueba esto:
- Elimine archivos ASP.NET temporales de la ubicación de
%temp%
. - Limpia y crea proyectos en tu solución uno por uno y luego crea tu host y prueba la depuración.
Funcionó para mí
Si ha personalizado la ruta de salida, asegúrese de que todas las rutas de salida estén apuntadas al mismo directorio de salida
Su clave F11 puede rebotar a otra cosa. Puede funcionar si hace clic en el botón de paso en Visual Studio.
Utilizo VS 2017 pero esto también funciona en 2015. Mi problema era que cuando establecía un punto de interrupción, el código se detenía correctamente en ese punto, pero cuando presioné F10 o F11 el código simplemente terminaría de ejecutarse en lugar de ir a la siguiente línea. También noté que, aunque el código se detuvo en el punto de interrupción, no pude usar el cursor para pasar sobre mis variables y ver sus valores. Aquí es cómo corregí el problema
- Con el proyecto abierto pero sin ejecutar, asegúrese de que se muestre la barra de herramientas Estándar (probablemente sea porque es el valor predeterminado)
- Mire la lista desplegable en la barra de herramientas que tiene las opciones Depurar, Liberar, Administrador de configuración. Seleccione Depurar de esta lista. El mío estaba configurado para liberar