Depurar o código-fonte .NET e ASP.NET Core com o Visual Studio

Para depurar o código-fonte .NET e ASP.NET Core no Visual Studio:

  • Em Ferramentas –> Opções –> Depuração –> Geral, não marcar Habilitar Apenas Meu Código.

    Habilitar Apenas Meu Código

  • Verifique se a opção Habilitar suporte ao Source Link está marcada.

    Habilitar suporte ao Source Link

  • Em Ferramenta –> Opções –> Depuração –> Símbolos, habilite Servidores de Símbolos da Microsoft.

    Servidores de Símbolo Microsoft

Quando você intervém em qualquer código .NET ou ASP.NET Core, o Visual Studio exibe o código-fonte. Por exemplo:

  • Defina um ponto de interrupção no OnGet em Pages/Privacy.cshtml.cs e selecione o link Privacy.

  • Selecione uma das opções de Baixar fonte e continuar depuração .

    O Source Link baixará

As instruções anteriores funcionam para funções básicas de intervenção, mas o código .NET otimizado geralmente remove variáveis e funções locais. Para desabilitar otimizações e permitir uma melhor depuração de origem:

  • Em Ferramentas -> Opções -> Depuração -> Geral, habilite Suprimir otimização JIT na carga de módulo (somente gerenciado): Suprimir otimização JIT na carga do módulo
  • Adicione a variável de ambiente e o valor COMPlus_ReadyToRun=0 ao arquivo 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"
          }
        }
      }
    }
    

Se você já depurou um aplicativo antes com a versão anterior do .NET, exclua o diretório %TEMP%/SymbolCache, pois ele pode ter PDBs antigos desatualizados.

Depurar o .NET Core no Unix por SSH

Recursos adicionais