jitCompilationStart MDA

Yönetilen jitCompilationStart hata ayıklama yardımcısı (MDA), tam zamanında (JIT) derleyici bir işlevi derlemeye başladığında raporlamak için etkinleştirilir.

Belirtiler

İşleme mscorjit.dll yüklendiğinden, zaten yerel görüntü biçiminde olan bir program için çalışma kümesi boyutu artar.

Nedeni

Programın bağımlı olduğu tüm derlemeler yerel biçimde oluşturulmamış veya bir derleme doğru kaydedilmemiş.

Çözüm

Bu MDA'nın etkinleştirilmesi, hangi işlevin JIT ile derlendiğini belirlemenize olanak tanır. İşlevi içeren derlemenin yerel biçimde oluşturulduğundan ve düzgün şekilde kaydedildiğinden emin olun.

Çalışma zamanı üzerindeki etkisi

Bu MDA, bir yöntemin JIT derlemesi olmadan hemen önce bir iletiyi günlüğe kaydeder, bu nedenle bu MDA'nın etkinleştirilmesi performansı önemli ölçüde etkiler. Bir yöntem satır içiyse, bu MDA ayrı bir ileti oluşturmaz.

Çıktı

Aşağıdaki kod örneği örnek çıktıyı gösterir. Bu durumda çıkış, derleme Testinde "ns2.CO" sınıfındaki "m" yönteminin JIT ile derlendiğini gösterir.

method name="Test!ns2.C0::m"  

Yapılandırma

Aşağıdaki yapılandırma dosyası, ilk JIT ile derlendiğinde hangi yöntemlerin raporlandığını filtrelemek için kullanılabilecek çeşitli filtreleri gösterir. Name özniteliğinin değerini * olarak ayarlayarak tüm yöntemlerin bildirileceğini belirtebilirsiniz.

<mdaConfig>  
  <assistants>  
    <jitCompilationStart>  
      <methods>  
        <match name="C0::m" />  
        <match name="MyMethod" />  
        <match name="C2::*" />  
        <match name="ns0::*" />  
        <match name="ns1.C0::*" />  
        <match name="ns2.C0::m" />  
        <match name="ns2.C0+N0::m" />  
      </methods>  
    </jitCompilationStart >  
  </assistants>  
</mdaConfig>  

Örnek

Aşağıdaki kod örneği, önceki yapılandırma dosyasıyla birlikte kullanılmak üzere tasarlanmıştır.

using System;  
using System.Reflection;  
using System.Runtime.CompilerServices;  
using System.Runtime.InteropServices;  
  
public class Entry  
{  
    public static void Main(string[] args)  
    {  
        C0.m();  
        C1.MyMethod();  
        C2.m();  
  
        ns0.C0.m();  
        ns0.C0.N0.m();  
        ns0.C1.m();  
  
        ns1.C0.m();  
        ns1.C0.N0.m();  
  
        ns2.C0.m();  
        ns2.C0.N0.m();  
    }  
}  
  
public class C0  
{  
    [MethodImpl(MethodImplOptions.NoInlining)]  
    public static void m() { }  
}  
  
public class C1  
{  
    [MethodImpl(MethodImplOptions.NoInlining)]  
    public static void MyMethod() { }  
}  
  
public class C2  
{  
    [MethodImpl(MethodImplOptions.NoInlining)]  
    public static void m() { }  
}  
  
namespace ns0  
{  
    public class C0  
    {  
        [MethodImpl(MethodImplOptions.NoInlining)]  
        public static void m() { }  
  
        public class N0  
        {  
            [MethodImpl(MethodImplOptions.NoInlining)]  
            public static void m() { }  
        }  
    }  
  
    public class C1  
    {  
        [MethodImpl(MethodImplOptions.NoInlining)]  
        public static void m() { }  
    }  
}  
  
namespace ns1  
{  
    public class C0  
    {  
        [MethodImpl(MethodImplOptions.NoInlining)]  
        public static void m() { }  
        public class N0  
        {  
            [MethodImpl(MethodImplOptions.NoInlining)]  
            public static void m() { }  
        }  
    }  
}  
  
namespace ns2  
{  
    public class C0  
    {  
        [MethodImpl(MethodImplOptions.NoInlining)]  
        public static void m() { }  
  
        public class N0  
        {  
            [MethodImpl(MethodImplOptions.NoInlining)]  
            public static void m() { }  
        }  
    }  
}  

Ayrıca bkz.