Profil Oluşturma Ortamını Ayarlama
Not
.NET Framework 4'te profil oluşturmada önemli değişiklikler yapılmıştır.
Yönetilen bir işlem (uygulama veya hizmet) başlatıldığında ortak dil çalışma zamanını (CLR) yükler. CLR başlatıldığında, işlemin bir profil oluşturucuya bağlanıp bağlanmayacağına karar vermek için aşağıdaki iki ortam değişkenini değerlendirir:
COR_ENABLE_PROFILING: CLR yalnızca bu ortam değişkeni varsa ve 1 olarak ayarlandıysa bir profil oluşturucuya bağlanır.
COR_PROFILER: COR_ENABLE_PROFILING denetimi geçerse, CLR daha önce kayıt defterinde depolanmış olması gereken bu CLSID veya ProgID'ye sahip profil oluşturucuya bağlanır. COR_PROFILER ortam değişkeni, aşağıdaki iki örnekte gösterildiği gibi bir dize olarak tanımlanır.
set COR_PROFILER={32E2F4DA-1BEA-47ea-88F9-C5DAF691C94A} set COR_PROFILER="MyProfiler"
Bir CLR uygulamasının profilini oluşturmak için, uygulamayı çalıştırmadan önce COR_ENABLE_PROFILING ve COR_PROFILER ortam değişkenlerini ayarlamanız gerekir. Profil oluşturucu DLL'sinin kayıtlı olduğundan da emin olmanız gerekir.
Not
.NET Framework 4'den başlayarak profil oluşturucuların kaydedilmesi gerekmez.
Not
.NET Framework 4 ve sonraki sürümlerde 2.0, 3.0 ve 3.5 profil oluşturucularının .NET Framework sürümlerini kullanmak için COMPLUS_ProfAPI_ProfilerCompatibilitySetting ortam değişkenini ayarlamanız gerekir.
Ortam Değişkeni Kapsamı
COR_ENABLE_PROFILING ve COR_PROFILER ortam değişkenlerini nasıl ayarlayacağınız, bunların etki kapsamını belirler. Bu değişkenleri aşağıdaki yollardan biriyle ayarlayabilirsiniz:
Bir ICorDebug::CreateProcess çağrısında değişkenleri ayarlarsanız, bunlar yalnızca o sırada çalıştırdığınız uygulamaya uygulanır. (Bu uygulamalar, ortamı devralan uygulama tarafından başlatılan diğer uygulamalar için de geçerlidir.)
Bir Komut İstemi penceresinde değişkenleri ayarlarsanız, bu değişkenler bu pencereden başlatılan tüm uygulamalara uygulanır.
Değişkenleri kullanıcı düzeyinde ayarlarsanız, bunlar Dosya Gezgini ile başladığınız tüm uygulamalara uygulanır. Değişkenleri ayarladıktan sonra açtığınız Bir Komut İstemi penceresinde bu ortam ayarları bulunur ve bu pencereden başlattığınız tüm uygulamalar da bu ayarlara sahip olur. Ortam değişkenlerini kullanıcı düzeyinde ayarlamak için Bilgisayarım'a sağ tıklayın, Özellikler'e tıklayın, Gelişmiş sekmesine tıklayın, Ortam Değişkenleri'ne tıklayın ve değişkenleri Kullanıcı değişkenleri listesine ekleyin.
Değişkenleri bilgisayar düzeyinde ayarlarsanız, bu değişkenler o bilgisayarda başlatılan tüm uygulamalara uygulanır. Bu bilgisayarda açtığınız Komut İstemi penceresinde bu ortam ayarları bulunur ve bu pencerede başlattığınız tüm uygulamalar da bu ayarlara sahip olur. Bu, söz konusu bilgisayardaki tüm yönetilen işlemlerin profil oluşturucunuzla başlayacağı anlamına gelir. Ortam değişkenlerini bilgisayar düzeyinde ayarlamak için Bilgisayarım'a sağ tıklayın, Özellikler'e tıklayın, Gelişmiş sekmesine tıklayın, Ortam Değişkenleri'ne tıklayın, değişkenleri Sistem değişkenleri listesine ekleyin ve bilgisayarınızı yeniden başlatın. Yeniden başlatıldıktan sonra değişkenler sistem genelinde kullanılabilir olacak.
Bir Windows Hizmeti profili oluştururken, ortam değişkenlerini ayarladıktan ve profil oluşturucu DLL'sini kaydettikten sonra bilgisayarınızı yeniden başlatmanız gerekir. Bu önemli noktalar hakkında daha fazla bilgi için Windows Hizmetinde Profil Oluşturma bölümüne bakın.
Dikkat Edilmesi Gereken Ek Noktalar
Profil oluşturucu sınıfı ICorProfilerCallback ve ICorProfilerCallback2 arabirimlerini uygular. .NET Framework sürüm 2.0'da bir profil oluşturucu uygulaması
ICorProfilerCallback2
gerekir. YüklenmiyorsaICorProfilerCallback2
yüklenmez.Belirli bir ortamda bir işlemin profilini bir kerede yalnızca bir profil oluşturucu oluşturabilir. Farklı ortamlarda iki farklı profil oluşturucu kaydedebilirsiniz, ancak her biri ayrı işlemlerin profilini oluşturmalıdır. Profil oluşturucu, profili oluşturulan işlemle aynı adres alanına eşlenen işlem içi com sunucusu DLL'i olarak uygulanmalıdır. Bu, profil oluşturucunun işlem halinde çalıştığı anlamına gelir. .NET Framework başka bir COM sunucusu türünü desteklemez. Örneğin, bir profil oluşturucu uzak bir bilgisayardan uygulamaları izlemek istiyorsa, her bilgisayarda toplayıcı aracıları uygulaması gerekir. Bu aracılar sonuçları toplu olarak oluşturur ve bunları merkezi veri toplama bilgisayarına iletir.
Profil oluşturucu, işlem içinde örneği oluşturulan bir COM nesnesi olduğundan, profili oluşturulan her uygulamanın kendi profil oluşturucu kopyası olur. Bu nedenle, tek bir profil oluşturucu örneğinin birden çok uygulamadaki verileri işlemesi gerekmez. Ancak, profili oluşturulan diğer uygulamalardan günlük dosyasının üzerine yazılmasını önlemek için profil oluşturucunun günlük koduna mantık eklemeniz gerekir.
Profil Oluşturucuyu Başlatma
Her iki ortam değişkeni denetimi de geçtiğinde CLR, COM CoCreateInstance
işlevine benzer şekilde profil oluşturucunun bir örneğini oluşturur. Profil oluşturucu doğrudan çağrısı CoCreateInstance
aracılığıyla yüklenmez. Bu nedenle, CoInitialize
iş parçacığı modelinin ayarlanmasını gerektiren çağrısından kaçınılır. CLR daha sonra profil oluşturucuda ICorProfilerCallback::Initialize yöntemini çağırır. Bu yöntemin imzası aşağıdaki gibidir.
HRESULT Initialize(IUnknown *pICorProfilerInfoUnk)
Profil oluşturucunun daha sonra profil oluşturma sırasında daha fazla bilgi isteyebilmesi için bir ICorProfilerInfo veya ICorProfilerInfo2 arabirim işaretçisini sorgulaması pICorProfilerInfoUnk
ve kaydetmesi gerekir.
Olay Bildirimlerini Ayarlama
Profil oluşturucu daha sonra hangi bildirim kategorileriyle ilgilendiğini belirtmek için ICorProfilerInfo::SetEventMask yöntemini çağırır. Örneğin, profil oluşturucu yalnızca işlev girme ve bırakma bildirimleri ve çöp toplama bildirimleriyle ilgileniyorsa, aşağıdakileri belirtir.
ICorProfilerInfo* pInfo;
pICorProfilerInfoUnk->QueryInterface(IID_ICorProfilerInfo, (void**)&pInfo);
pInfo->SetEventMask(COR_PRF_MONITOR_ENTERLEAVE | COR_PRF_MONITOR_GC)
Profil oluşturucu, bildirim maskesini bu şekilde ayarlayarak hangi bildirimleri alacağını sınırlayabilir. Bu yaklaşım, kullanıcının basit veya özel amaçlı bir profil oluşturucu oluşturmasını sağlar. Ayrıca, profil oluşturucunun yoksayacağı bildirimleri göndermek için harcanan CPU süresini azaltır.
Bazı profil oluşturucu olayları sabittir. Bu, bu olaylar geri çağırmada ICorProfilerCallback::Initialize
ayarlanır ayarlanmaz kapatılamayacağı ve yeni olayların açılamayacağı anlamına gelir. Sabit bir olayı değiştirme girişimleri başarısız bir HRESULT döndürülmesine ICorProfilerInfo::SetEventMask
neden olur.
Windows Hizmeti Profili Oluşturma
Windows Hizmeti'nin profilini oluşturmak, ortak dil çalışma zamanı uygulamasının profilini oluşturmak gibidir. Her iki profil oluşturma işlemi de ortam değişkenleri aracılığıyla etkinleştirilir. İşletim sistemi başlatıldığında bir Windows Hizmeti başlatıldığından, bu konuda daha önce açıklanan ortam değişkenleri zaten mevcut olmalı ve sistem başlatılmadan önce gerekli değerlere ayarlanmalıdır. Ayrıca profil oluşturma DLL'sinin sistemde zaten kayıtlı olması gerekir.
COR_ENABLE_PROFILING ve COR_PROFILER ortam değişkenlerini ayarladıktan ve profil oluşturucu DLL'sini kaydettikten sonra, Windows Hizmeti'nin bu değişiklikleri algılaması için hedef bilgisayarı yeniden başlatmanız gerekir.
Bu değişikliklerin sistem genelinde profil oluşturmayı etkinleştireceğini unutmayın. Daha sonra çalıştırılan her yönetilen uygulamanın profilinin alınmasını önlemek için, hedef bilgisayarı yeniden başlattıktan sonra sistem ortam değişkenlerini silmeniz gerekir.
Bu teknik ayrıca her CLR işleminin profilinin ayarlanmasına da yol açar. Profil oluşturucu, geçerli işlemin ilgi çekici olup olmadığını algılamak için ICorProfilerCallback::Initialize geri çağırmasına mantık eklemelidir. Aksi takdirde, profil oluşturucu başlatmayı gerçekleştirmeden geri çağırmada başarısız olabilir.