使用 Visual Studio 调试 .NET 和 ASP.NET Core 源代码

若要在 Visual Studio 中调试 .NET 和 ASP.NET Core 源代码,请执行以下操作:

  • 在“工具”->“选项”->“调试”->“常规”中,取消选中“启用‘仅我的代码’”。

    启用“仅我的代码”

  • 确认已选中“启用源链接支持”。

    启用源链接支持

  • 在“工具”->“选项”->“调试”->“符号”中,启用“Microsoft 符号服务器”。

    Microsoft 符号服务器

当你单步执行任何 .NET 或 ASP.NET Core 代码时,Visual Studio 会显示源代码。 例如:

  • Pages/Privacy.cshtml.csOnGet 中设置一个断点,然后选择 Privacy 链接。

  • 选择“下载源并继续调试”选项之一。

    源链接将下载

上述说明适用于基本的单步执行函数,但经过优化的 .NET 代码通常会删除局部变量和函数。 若要禁用优化并实现更好的源调试,请执行以下操作:

  • 在“工具”->“选项”->“调试”->“常规”中,启用“在模块加载时取消 JIT 优化(仅限托管)”:在模块加载时取消 JIT 优化
  • 将环境变量和值 COMPlus_ReadyToRun=0 添加到 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"
          }
        }
      }
    }
    

如果你使用早期版本的 .NET 调试过应用,请删除 %TEMP%/SymbolCache 目录,因为它可能包含过期的旧 PDB。

通过 SSH 在 Unix 上调试 .NET Core

其他资源