&Notnbsp; Bu teknik Not Windows 3.1 için yazılmıştır. Windows NT özelliklerinin çoğu uygular. Windows 3.1 (ile Win32 DLL) altında uygulama çalışırken, bu tekniklerin hata ayıklama yardımcı olabilir. Windows 95 de uygular ve Windows 3.1 sırasında yerine sağlamlık özelliklerini genişletir. Windows 95 hata ayıklama sürümünü çalıştıran sigorta uygulamanız için en iyi yolu temiz çalışıyor olduğunu.
Windows 3.1, Windows 3.0 sağlam uygulama geliştirme alanında büyük bir gelişme bitti. Windows 3.1, Windows uygulamasının güvenilirliği artıran yeni özellikler içerir. Bu teknik not mfc kitaplık içinde bu özellikleri açıklar.
Bu özellikler, hata ayıklama çekirdek, sıkı tür denetlemesi, teşhis ve bellek yönetimi ve WINDOWSX içerir.H geliştirmeleri.
Windows 3.1 hata ayıklama çekirdek
&Notnbsp; Bu bölüm yalnızca Microsoft Visual c++ için sürüm 1.5 geçerlidir.
Mfc uygulamanızda hata ayıklama sistemi çalıştırılabilir test uygulamaları sağlam ve güvenilir olduğundan emin olmak için yapabileceğiniz en iyi şey ağıdır. Sistem uygulama hata ayıklama sürümlerini yararlı hata denetimi sizin için size hata ayıklama çıktısı mesaj ile ortaya çıkan sorunları bildiren her türlü gerçekleştirmek.
İki makine ile hata ayıklama sistemi kullanmak için en iyi yol olduğunu: hata ayıklama sistemi ve gelişimi için bir makine için sınama ve hata ayıklama, bir makine vardır. Bir makine, test makine, her zaman hata ayıklama çekirdek ile çalışmalıdır. Diğer makine, geliştirme makinenizi olmayan hata ayıklama çekirdek ile çalışmalıdır. Hata ayıklama çekirdek çıktısı birincil makineye bir kukla modem hattı üzerinden gönderilebilir. Eğer sadece tek bir makine var, (orada küçük bir performans düşüşü) hata ayıklama çekirdek çalıştırdığınızdan emin olmalıdır. DBWIN, Microsoft Visual c++ sürüm 1.5 ile bulunan bir araç hata ayıklama çekirdek çıktısı yönlendirilebilir. Ayrıca Visual c++ Output penceresine çıkış hata ayıklayıcı altında çalışırken alacaksınız.
Tek makineli hata ayıklama için yararlı bir numara sembolleri ve sistem ve hata ayıklama ikili dosyalarının kopyalarını ayrı bir dizine yerleştirin ve gerekli dosyaları, Windows System dizinine kopyalayın toplu iş dosyaları var. Bu şekilde çıkma pencere eşiği ve ileri geri hata ayıklama ve hata ayıklama olmayan arasında hızla geçiş yapabilirsiniz. Visual c++ sürüm 1.5 yükleme programı bu kurar, sonra hata ayıklama ve -debug sürümünü Windows ile D2N arasında geçiş yapabilirsiniz.bat ve N2D.bat: toplu iş dosyaları.
Bir hata veya hata ayıklama terminal ile çalıştırmıyorsanız, öylesine sen-ebilmek görmek hata ve uyarı mesajları hata ayıklama sistemi tarafından üretilen DBWIN uygulama çalıştırmanız gerekir. Bu uygulama Visual c++ sürüm 1.5 ile birlikte gelir.
Sevk edilen Windows uygulamalarında sıkça görünen bazı ortak programlama hatalar aşağıdadır. Bu sorunların çoğunu rasgele sistem UAEs ve Windows 3.0 altında başka sorunlara neden olabilir. Hata ayıklama sistemi ikili sorunları gibi izlemenize yardımcı olacak:
Mfc tanılama
Ayrıca, derlenir ve yalnızca hata ayıklama yapı kitaplığı bağlantılı sağlamlık özellikleri bir dizi Microsoft Foundation Classes gemi (Bu kütüphane türevleri ile biten bir vardı '). Yazmak ve tasarım sınıfları hem çalışma zamanı hem de derleme zamanı hatası bindirme uygulama büyük ölçüde artıracak uygulamalar bu özelliklerin kullanımı. Bu işlevleri aşağıda özetlenen, ancak tüm Sınıf kitaplığı başvuru kılavuzunda belirtilen.
CObject MFC'deki türetilmiş her sınıf, bir ASCII biçiminde bir nesnenin durumunu görüntülemenize izin veren bir döküm üye işlevini uygular. Bu işlev hata ayıklayıcı denilen ya da #ifdef _debug /#endif bölümleri kodunuzun içinde yerleştirilir. Yardımcı fonksiyon AfxDump , sadece bu amaç için debug kütüphane bulunmaktadır. Bir tek parametre ile CObject * denir. Argüman yazdırmak için hata ayıklayıcı gelen bu işlevini çağırabilirsiniz. Sen uygulamak sınıfları için döküm üye sağlamanız. İle AssertValid gibi size ilk kez açıkça temel sınıf döküm üye işlevi çağırmalıdır. Dökümü çıktısı standart mfc CDumpContext, bu varsayılan hata ayıklayıcı output penceresi veya hata ayıklama terminal gider afxDump, yönlendirilir. DBWIN programı, afxDumpgörebilmek için de kullanabilirsiniz. Kaynak dosya MFC\SRC\DUMPINIT.cpp afxDump başka bir hedefe yönlendiren hakkında bilgi içerir.
İzleme, printf, afxDump konumu yalnızca çıkış yolları çok davranan makro seviyorum. İzleme deyimleri kodunuzu zor ya da olağanüstü yerler belirtmek için kullanmanız gerekir. Olarak diğer sağlamlık özellikleri ile izleme yalnızca hata ayıklama Kitaplığı'nda anlamlı ve perakende yapısında etkisi yoktur. İzleme deyimleri iletilerin akışını izlemek için yerleşik mfc kitaplık içerir. Hata ayıklama izleme hakkında daha fazla bilgi için Teknik Not 7 bkz.
assert bir açıklama geçerliliği için çalıştırma onay var. asserts liberal program boyunca kullanmanız gerekir. Sen-si olmak yorum etkisi her yerde:
/ / lpStr null olmalıdır Bu noktada
bu çalışma assert ile değiştirmeniz gerekir:
ASSERT(lpStr == null)
Derleyici yorum anlayamıyorum, ama iddia makro ifade değerlendirebilirsiniz. assert deyimleri, perakende yapılarında hiçbir etkisi yoktur. assert bilgileri, perakende yapı gerekiyorsa, sonra doğrulama makrosu kullanın.
Mfc de kapsamlı Tanı bellek ayırıcı içerir. Tanılama bellek ayırıcı, belirli program fonksiyonları sırasında tüm bellek kaynakları serbest denetlemek için kullanın. Diagnostik ayırıcı-ecek iz kaynak dosya ve satır sayısı bir ayırma, böylece CMemoryState::DumpAllObjectsSince API kullanırsanız, kalan tüm ayırmaları bulabilirsiniz.
Varsayılan olarak, tüm nesneleri (eğer varsa) önce programınızı çıkar programınız tarafından serbest değil mfc dökümü. Bu çıkış hata ayıklayıcı altında uygulama çalıştırarak görüntüleyebilirsiniz.
Windows 3.1 sıkı tür denetlemesi
Sıkı tür denetlemesi WINDOWS ile kullanılabilir bir seçenek vardır.H başlık dosyasına bakınız. mfc bu sıkı türleri varsayılan olarak kullanır ve bir mfc uygulaması geliştiriyorsanız onları kullanmanız gerekir. mfc olmadan katı defintions bir uygulama artık destekler.
Türgüvenli bağlantı ve katı
Bu işlevler farklı biçimsel parametre listeleri sürece c++ ile aynı ada sahip birçok fonksiyona sahip verilmez. Benzersiz bağlantı sembolünüz için c++ Derleyici "bu adları bir işlev adı, numarası ve çağırma kuralı, vb biçimsel parametre türü gibi bilgileri kodlayan bir algoritma kullanılarak dekore".
Bu yeni oluşturulan adı dış bağlantı simgesi olarak işlev için kullanılır. Bu türgüvenli bağlantı bilinir ve c++ büyük bir avantajı. Bu ad düzenleme fonksiyonları içinde extern "c" bloğu geçerli değildir, ve bu yüzden tüm API'ler Windows.H olan böyle bir bloğu.
WINDOWS denetleme sıkı türü.H, Windows tüm farklı kolları temsil etmek üzere farklı türleri kullanarak Windows programları için tür güvenliği geliştirir. Yani, örneğin, katı , yanlışlıkla bir hpen bir HBITMAP bekliyor bir rutin geçerek gelen engeller.
Windows API'ları tüm extern "c" {} blokları içinde olduğundan, bunlar yukarıda açıklandığı şekilde dekore değil. Katı (özellikle farklı işaretçi türleri bir açık döküm serbestçe dönüştürülemez eles göstermek için kullandığı) benzersiz olacak biçimde çeşitli Windows TypeDef türlerini değiştirir.
Sıkı türü tek bir dosya, ancak başka etkin denetimi varsa, gördüğünüz gibi c++ derleyici farklı dış bağlantı simgeleri için tek bir işlev oluşturur. Bu bağlantı Zamanı hatalarına neden. Bu nedenle, yalnızca c modülleri (Bu da sona. denetleme sıkı türünü kullanın önerilirc). bir kez başarıyla kodunuzu derlemek, sıkı avantajlarından tamamen gerçekleştirilmektedir Ayrıca sıkı bir derleme zamanı seçeneği yalnızca, yani.
Eğer sıkı karıştırma ve non-sıkı kodu olmalıdır bağlantı tutarsızlık farkında. Genel olarak, tüm mfc programlama ve tüm c++ katıile yapılmalıdır. Ardından sıkı kullanmayan eski c kodu varsa, kabul edilebilir.
Windows 3.1 WINDOWSX.H üstbilgi dosyası
Windows 3.1 ve Win32 ile WINDOWSX yeni.c. kullanarak Windows programcılarının çeşitli uzantıları c-kodlama stili destekleyen h üstbilgi dosyası Bu makro API'leri, ileti kraker ve denetimi API WINDOWSX dosyasında tanımlanır.H.
Bu sözdizimi, öncelikle c programcıları için tasarlanmıştır. mfc WINDOWSX destekler.Dayanan mevcut kodu varsa bu gerilimler, h mfc içinde değiştirilmemiş bu kodu kullanın. Eğer, ancak, mfc tüm şekil-in WINDOWSX benzer deyimler vardır bulacaksınız.H ve kullanımları c++ dili daha semantik ve mimari Emanet bu görevleri gerçekleştirmek için.
WINDOWSX kullanmak için.H # için emin olun, AFXWIN dahil önce dahil.H (ya da stdafx.h AppWizard yapısını kullanıyorsanız).
Tek bilmeniz gereken, orada iki WINDOWSX vardır.H çarpışır API'leri mfc c++ API'ları ile. İki API SubclassWindow ve CopyRgn içindeki mfc kullanılabilir değildir. Bunlar ya da kullanmak için recode mfc API (ve sınıflar) veya doğrudan Windows API çekmek gerekir. Farklı bir ad olduğu sürece kendi makro kodu.
Teknik notlar numarasına göre |nbsp; Teknik notlar kategorisine göre