Déboguer du code source .NET et ASP.NET Core avec Visual Studio

Pour déboguer le code source de .NET et d’ASP.NET Core dans Visual Studio :

  • Dans Outils -> Options -> Débogage -> Général, décochez Activer Uniquement mon code.

    Activer Uniquement mon code

  • Vérifiez que l’option Activer la prise en charge de Source Link est cochée.

    Activer la prise en charge de Source Link

  • Dans Outils -> Options -> Débogage -> Symboles, activez Serveurs de symboles Microsoft.

    Serveur de symboles Microsoft

Lorsque vous effectuez un pas à pas détaillé dans un code .NET ou ASP.NET Core, Visual Studio affiche le code source. Par exemple :

  • Définissez un point d’arrêt dans OnGet, dans Pages/Privacy.cshtml.cs, puis sélectionnez le lien Privacy.

  • Sélectionnez l’une des options Télécharger la source et Continuer le débogage.

    Le lien source téléchargera le fichier

Les instructions précédentes fonctionnent pour l’exécution pas à pas détaillée de base dans les fonctions, mais le code .NET optimisé élimine souvent à l’optimisation les variables et les fonctions locales. Pour désactiver les optimisations et faciliter le débogage du code source :

  • Dans Outils -> Options -> Débogage -> Général, activez Supprimer l’optimisation JIT lors du chargement du module (code managé uniquement) : Supprimer l’optimisation JIT lors du chargement du module
  • Ajoutez la variable d’environnement et sa valeur COMPlus_ReadyToRun=0 dans le fichier 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 vous avez déjà débogué une application avec la version précédente de .NET, supprimez le répertoire %TEMP%/SymbolCache, car il peut contenir d’anciens fichiers PDB qui ne sont plus à jour.

Débogage de .NET Core sur Unix via SSH