Depurar código fuente de .NET y ASP.NET Core con Visual Studio

Para depurar código fuente de .NET y ASP.NET Core en Visual Studio:

  • En Herramientas -> Opciones -> Depuración -> General, desactive Habilitar Solo mi código.

    Habilitar solo mi código

  • Compruebe que la opción Habilitar compatibilidad con vínculos de origen está activada.

    Habilitar compatibilidad con vínculos de origen

  • En Herramientas -> Opciones -> Depuración -> Símbolos, habilite Servidores de símbolos de Microsoft.

    Servidores de símbolos de Microsoft

Al depurar paso a paso por instrucciones cualquier código de .NET o ASP.NET Core, en Visual Studio se muestra el código fuente. Por ejemplo:

  • Establezca un punto de interrupción en OnGet en Pages/Privacy.cshtml.cs y seleccione el vínculo Privacy.

  • Seleccione una de las opciones Descargar código fuente y Continuar con la depuración.

    El vínculo de origen se descargará

Las instrucciones anteriores funcionan para la entrada básica en funciones, pero en el código de .NET optimizado se suelen quitar las variables y funciones locales. Para deshabilitar las optimizaciones y permitir una mejor depuración del código fuente:

  • En Herramientas -> Opciones -> Depuración -> General, habilite Suprimir la optimización JIT al cargar el módulo (solo código administrado): Suprimir la optimización JIT al cargar el módulo
  • Agregue la variable de entorno y el valor COMPlus_ReadyToRun=0 al archivo Properties/launchSettings.json:
    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:10892",
          "sslPort": 44315
        }
      },
      "profiles": {
        "WebApplication18": {
          "commandName": "Project",
          "dotnetRunMessages": true,
          "launchBrowser": true,
          "applicationUrl": "https://localhost:7045;http://localhost:5045",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        },
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        }
      }
    }
    

Si ha depurado una aplicación antes con la versión anterior de .NET, elimine el directorio %TEMP%/SymbolCache, ya que puede tener archivos PDB antiguos que no estén actualizados.

Depuración de .NET Core en Unix a través de SSH