Visual Studio에서 .NET 및 ASP.NET Core 소스 코드 디버그

Visual Studio에서 .NET 및 ASP.NET Core 소스 코드를 디버그하려면

  • 도구 -> 옵션 -> 디버깅 -> 일반에서 내 코드만 사용을 선택 취소합니다.

    Enable Just My Code

  • 소스 링크 지원 사용이 선택되어 있는지 확인합니다.

    Enable Source Link support

  • 도구 -> 옵션 -> 디버깅 -> 기호에서 Microsoft 기호 서버를 선택합니다.

    Microsoft Symbol Server

.NET 또는 ASP.NET Core 코드를 한 단계씩 실행하면 Visual Studio가 소스 코드를 표시합니다. 예시:

  • Pages/Privacy.cshtml.csOnGet에서 중단점을 설정하고 Privacy 링크를 선택합니다.

  • 소스 다운로드 후 디버깅 계속 옵션 중 하나를 선택합니다.

    Source Link Will Download

위의 명령은 기본적인 한 단계씩 함수 실행에 유효하지만 최적화된 .NET 코드는 종종 지역 변수 및 함수를 제거합니다. 최적화를 사용하지 않도록 설정하고 소스 디버깅을 향상하려면

  • 도구 - 옵션 -> 디버깅 -> 일반에서 모듈 로드에서 JIT 최적화 표시 안 함(관리 전용)을 사용하도록 설정합니다.>Suppress JIT optimization on module load
  • Properties/launchSettings.json 파일에 환경 변수와 값 COMPlus_ReadyToRun=0을 추가합니다.
    {
      "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을 사용하여 앱을 디버그한 적이 있는 경우 오래된 PDB가 있을 수 있으므로 %TEMP%/SymbolCache 디렉터리를 삭제합니다.

SSH를 통해 Unix에서 .NET Core 디버그

추가 리소스