Aracılığıyla paylaş


_ATL_DEBUG_INTERFACES

Tüm izleme atl üstbilgi dosyaları dahil olmak üzere bu makro tanımla AddRef ve yayın output penceresine kendi bileşenleri arabirimlerdeki çağırır.

#define _ATL_DEBUG_INTERFACES

Notlar

Takip çıktısı aşağıda gösterildiği gibi görünecektir:

ATL: QIThunk - 2008 AddRef : Object = 0x00d81ba0 Refcount = 1 CBug - IBug

Her izleme ilk bölümü her zaman olacaktır ATL: QIThunk.Sonraki, belli tanımlayan bir değer arabirimi thunk kullanılıyor.Bir arabirim thunk başvuru sayısı korumak ve burada kullanılan izleme yeteneği sağlamak için kullanılan bir nesnedir.Her arama için oluşturulan yeni bir arabirim thunk QueryInterface için istekleri dışında IUnknown arabirimi (Bu durumda, aynı thunk her zaman COM'ın kimlik kurallarına uygun döner).

Sonraki göreceğiniz AddRef veya yayın gösteren hangi yöntemi çağrıldı., Arabirimi başvuru sayısı değişti nesne tanımlayıcı değerini görürsünüz.İzlenen değeri Bu nesne işaretçisi.

Sonra o thunk üzerinde başvuru sayısı izleneceğini başvuru sayısı ise AddRef veya yayın çağrıldı.Not Bu başvuru sayısı nesnesi için başvuru sayısı eşleşmiyor olabilir.Her thunk tam olarak COM'ın başvuru sayımı kurallarına uygun yardımcı olmak için kendi Referans sayımı tutar.

Son izlenen adı nesnesi tarafından etkilenen arabirimi ve bilgidir AddRef veya yayın çağırın.

Herhangi bir arabirim sunucuda oturum kapatıldığında algılanan sızıntıları ve _Module.Term adlı oturum açmış olmalısınız şöyle:

ATL: QIThunk - 2005 LEAK : Object = 0x00d81ca0 Refcount = 1 MaxRefCount = 1 CBug - IBug

Bilgileri doğrudan önceki trace deyimlerinde de sağlanan bilgiler haritalar burada sağlanan, geçirebileceğiniz şekilde başvurusu arabirimi thunk bütün ömrü sayar.Buna ek olarak, bu arabirimi thunk üzerinde en çok başvuru sayısına bir göstergesi alın.

[!NOT]

_ATL_DEBUG_INTERFACESPerakende yapılarında da kullanılabilir.

İpuçları

  • Bakarak yeni bir arabirimi thunk oluşturulduğunda görmek AddRef ile çağıran bir Refcount 1.

  • Arabirim thunk bakarak ne zaman yok görmek Release ile çağıran bir Refcount 0.

  • Kolayca kesmek ve Gelişmiş filtreleme, arama ve sıralama yeteneklerini sağlamak için Microsoft Excel gibi bir elektronik tablo bilgileri yapıştırın izleme deyimlerinin sekmeyle ayrılmış biçimde çıktısı alınır.

  • Kodunuzu daha iyi çalışır görünüyorsa, _ATL_DEBUG_INTERFACES tanımlı değil, ancak nedenleri erişim ihlalleri makro tanımlandığında, Ýstemci kodunuz, aşağıda gösterilene benzer neredeyse tümüyle eşleşmeyen bir başvuru sayımı hata vardır:

    IBug* pBug = NULL;
    hr = p->QueryInterface(&pBug);
    ATLASSERT(SUCCEEDED(hr));
    IBug* pBug2 = NULL;
    hr = p->QueryInterface(&pBug2);
    ATLASSERT(SUCCEEDED(hr));
    pBug->Release();
    pBug->Release();    // Mismatched - should be pBug2->Release();   
    

    Sık kullanılan bazı koşullarda çalışmak için bu kodu görünebilir, ancak açıkça buggy.Bu kod hiç bir çözüm bulmak, com nesnesi sağlama uygulama ayrıntılarını dayanır IBug arabirimi (IBug arabirim etiketleri uygulanan) ve konumuna bağımlıdır (istemci aynı grup içinde olmalıdır IBug uygulaması).Kullanımı _ATL_DEBUG_INTERFACES makro ışık için bu tür hataların getirmek.

Ayrıca bkz.

Diğer Kaynaklar

Hata raporlama ve hata ayıklama makroları

ATL Makroları