Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u fouten in code probeert op te sporen, is het eenvoudiger wanneer die code NIET is geoptimaliseerd. Wanneer code is geoptimaliseerd, brengen de compiler en runtime wijzigingen aan in de gegenereerde CPU-code, zodat deze sneller wordt uitgevoerd, maar heeft een minder directe toewijzing aan de oorspronkelijke broncode. Als de toewijzing minder direct is, kunnen foutopsporingsprogramma's u vaak niet de waarde van lokale variabelen vertellen en werken codestap- en onderbrekingspunten mogelijk niet zoals verwacht.
Opmerking
Zie Foutopsporing met behulp van het Just-In-Time Foutopsporingsprogramma in Visual Studio voor meer informatie over foutopsporing in JIT (Just-In-Time).
Hoe optimalisaties werken in .NET
Normaal gesproken maakt de Release-buildconfiguratie geoptimaliseerde code, terwijl de Debug-buildconfiguratie dat niet doet. De Optimize eigenschap MSBuild bepaalt of de compiler wordt verteld code te optimaliseren.
In het .NET-ecosysteem wordt code omgezet van bron- naar CPU-instructies in een proces in twee stappen: eerst converteert de C#-compiler de tekst die u typt naar een tussenliggend binair formulier met de naam MSIL en schrijft de MSIL naar .dll bestanden. Later converteert de .NET Runtime deze MSIL naar CPU-instructies. Beide stappen kunnen in zekere mate worden geoptimaliseerd, maar de tweede stap die door de .NET Runtime wordt uitgevoerd, voert de belangrijkste optimalisaties uit.
De optie JIT-optimalisatie onderdrukken bij modulebelasting (alleen beheerd)
Het foutopsporingsprogramma maakt een optie beschikbaar waarmee wordt beheerd wat er gebeurt wanneer een DLL die is gecompileerd met optimalisaties, laadt binnen het doelproces. Als deze optie is uitgeschakeld (de standaardstatus), laat de optimalisaties ingeschakeld wanneer de .NET Runtime de MSIL-code compileert in CPU-code. Als de optie is ingeschakeld, vraagt het foutopsporingsprogramma om optimalisaties uit te schakelen.
U kunt de optie JIT-optimalisatie onderdrukken bij het laden van modules (alleen beheerd) configureren in het deelvensterExtra-opties> in de sectieAlgemene>foutopsporing>:
              
              
            
U kunt de optie JIT-optimalisatie onderdrukken bij het laden van modules (alleen beheerd) configureren in het dialoogvensterExtra-opties> in de sectie Algemene>foutopsporing:
              
              
            
Wanneer moet u de optie 'JIT-optimalisatie onderdrukken' aanvinken?
Schakel deze optie in wanneer u de DLL's hebt gedownload uit een andere bron, zoals een NuGet-pakket, en u fouten wilt opsporen in de code in dit DLL-bestand. Opdat de onderdrukking werkt, moet u ook het symboolbestand (.pdb) van deze DLL vinden.
Als u alleen geïnteresseerd bent in het opsporen van fouten in de code die u lokaal bouwt, kunt u deze optie het beste uitgeschakeld laten, omdat in sommige gevallen het inschakelen van deze optie aanzienlijk de foutopsporing vertraagt. Er zijn twee redenen voor de vertraging:
- Geoptimaliseerde code wordt sneller uitgevoerd. Als u optimalisaties voor veel code uitschakelt, kan de prestatie-impact zich opstapelen.
 - Als Just My Code is ingeschakeld, probeert het foutopsporingsprogramma niet eens symbolen te laden voor DLL's die zijn geoptimaliseerd. Het zoeken naar symbolen kan lang duren.
 
Beperkingen van de optie JIT-optimalisatie onderdrukken
Er zijn twee scenario's waarbij het inschakelen van deze optie NIET werkt:
- Als u het foutopsporingsprogramma koppelt aan een al uitgevoerd proces, heeft deze optie geen invloed op modules die al zijn geladen op het moment dat het foutopsporingsprogramma is gekoppeld.
 
Deze optie heeft geen effect op DLL's die vooraf zijn gecompileerd (of ngen'ed) naar systeemeigen code. U kunt het gebruik van vooraf gecompileerde code echter uitschakelen door het proces te starten met de omgevingsvariabele 'COMPlus_ReadyToRun' ingesteld op '0'. Deze benadering vertelt de .NET Core-runtime om het gebruik van vooraf gecompileerde afbeeldingen uit te schakelen, waardoor de runtime gedwongen wordt JIT frameworkcode te compileren.
Als u zich richt op .NET Framework, voegt u de omgevingsvariabele 'COMPlus_ZapDisable' toe en stelt u deze in op '1'.
Stel "COMPlus_ReadyToRun": "0" in door het toe te voegen aan elk profiel in het Eigenschappen\launchSettings.jsop bestand.
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:59694/",
      "sslPort": 44320
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "COMPlus_ReadyToRun": "0"
      }
    },
    "HttpLoggingSample": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "COMPlus_ReadyToRun": "0"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}