2015-07-29 23 views
9

IIS çalıştıran bir üretim ortamında bir ASP.NET MVC uygulaması analiz etmek Process Explorer ile, ben C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll bu CopyPDBs işlevine çağrı çok fark ettik:Bu CopyPDBs işlevi (clr.dll) işlevi nedir?

Process Explorer CopyPDBs

Hepsi yaşıyorsanız aynı yığın takibi:

ntdll.dll!ZwWaitForSingleObject+0xa 
KERNELBASE.dll!WaitForSingleObjectEx+0x98 
clr.dll!GetMetaDataInternalInterface+0x3064a 
clr.dll!GetMetaDataInternalInterface+0x30732 
clr.dll!GetMetaDataInternalInterface+0x306e5 
clr.dll!CopyPDBs+0x44a2 
KERNEL32.DLL!BaseThreadInitThunk+0x22 
ntdll.dll!RtlUserThreadStart+0x34 

sorum şu: clr.dll bu CopyPDBs fonksiyon tam olarak durumu ne?

Çok arandım, ancak yine de bu işlevin herhangi bir ek açıklamasını ve/veya belgelerini bulamıyorum.

Not: Bu soru nasılsa ServerFault sordu benim bir önceki soruya ile ilgilidir: Bir şey yapmıyor https://serverfault.com/questions/684554/high-cpu-usage-of-iis-process-w3wp-exe-because-of-many-slow-clr-dllcopypdbs

cevap

13

. İşlem Gezgini, clr.dll için PDB dosyasına erişimi yoktur, bu nedenle kod hakkında yeterince bilgi sahibi olmaz. Bilinen sembolden gelen talimat ofsetine baktığınızda her zaman çok belirgin olan, +0x44a2, uzun, CopyPDBs() işlevini geçmiştir. Clr.dll'den gördüğünüz tüm semboller önemsizdir. Ntdll.dll gelen semboller iyidir, küçük ofsetler dikkat edin.

Bir DLL'de iç işlevler için semboller sağlayan bir PDB dosyası olmadan, bir hata ayıklayıcı yalnızca dışa aktarılan işlevlere güvenebilir. Clr.dll çoğunun yok.

Help Proses Gezgini'nin daha iyi yığın izleri göstermesi this blog post konusudur.

WinDbg tek yolu değil, Visual Studio ile bunu da yapabilirsiniz:

  1. Araçlar> Seçenekler> Hata ayıklama> semboller. "Microsoft Symbol Sunucuları" onay kutusunu işaretleyin ve bir önbellek dizini seçin.
  2. Proje> Özellikler> Hata Ayıkla> "Yerel kod hata ayıklamayı etkinleştir" seçeneğini işaretleyin.
  3. F5 tuşuna basın, sembolleri indirerek hata ayıklayıcısını görürsünüz. Bir süre alır, sadece bir kez olur.
  4. İşlem Gezgini'ne Seçenekler> Sembolleri Yapılandırma ile seçtiğiniz önbellek dizinine bildirin.
+1

Başka bir makale: http://www.hanselman.com/blog/SetUpYourSystemToUseMicrosoftsPublicSymbolServer.aspx –