Hata ayıklama yordamları
C çalışma zamanı kitaplığının hata ayıklama sürümü, programlarda hata ayıklamayı kolaylaştıran ve geliştiricilerin şunları yapmasına olanak sağlayan birçok tanılama hizmeti sağlar:
Hata ayıklama sırasında doğrudan çalışma zamanı işlevlerine adımlayın
Onayları, hataları ve özel durumları çözme
Yığın ayırmalarını izleme ve bellek sızıntılarını önleme
Hata ayıklama iletilerini kullanıcıya bildirme
C çalışma zamanı kitaplığı yordamlarının sürümlerinde hata ayıklama
Bu yordamları kullanmak için bayrağı tanımlanmalıdır _DEBUG
. Bu yordamların tümü, bir uygulamanın perakende derlemesinde hiçbir şey yapmaz. Yeni hata ayıklama yordamlarını kullanma hakkında daha fazla bilgi için bkz . CRT hata ayıklama teknikleri.
Yordam | Kullanma |
---|---|
_ASSERT |
Bir ifadeyi değerlendirme ve sonuç olduğunda hata ayıklama raporu oluşturma FALSE |
_ASSERTE |
gibi _ASSERT , ancak oluşturulan rapordaki başarısız ifadeyi içerir |
_CrtCheckMemory |
Hata ayıklama yığınında ayrılan bellek bloklarının bütünlüğünü onaylayın |
_CrtDbgBreak |
Bir kesme noktası ayarlar. |
_CrtDbgReport , _CrtDbgReportW |
Kullanıcı iletisiyle hata ayıklama raporu oluşturma ve raporu üç olası hedefe gönderme |
_CrtDoForAllClientObjects |
Yığındaki tüm _CLIENT_BLOCK türler için uygulama tarafından sağlanan bir işlev çağırma |
_CrtDumpMemoryLeaks |
Önemli bir bellek sızıntısı oluştuğunda tüm bellek bloklarını hata ayıklama yığınına dökümü |
_CrtIsMemoryBlock |
Belirtilen bellek bloğunun yerel yığın içinde yer aldığını ve geçerli bir hata ayıklama öbeği türü tanımlayıcısına sahip olduğunu doğrulayın |
_CrtIsValidHeapPointer |
Belirtilen işaretçinin yerel yığında olduğunu doğrular |
_CrtIsValidPointer |
Belirtilen bellek aralığının okuma ve yazma için geçerli olduğunu doğrulayın |
_CrtMemCheckpoint |
Hata ayıklama yığınının geçerli durumunu alın ve uygulama tarafından sağlanan _CrtMemState bir yapıda depolayın |
_CrtMemDifference |
Önemli farklar için iki bellek durumlarını karşılaştırın ve sonuçları döndürin |
_CrtMemDumpAllObjectsSince |
Belirtilen denetim noktası alındığından veya program yürütmenin başlangıcından itibaren yığındaki nesneler hakkında bilgi dökümü |
_CrtMemDumpStatistics |
Kullanıcı tarafından okunabilir bir formda belirtilen bellek durumu için hata ayıklama üst bilgi dökümü |
_CrtReportBlockType |
Belirli bir hata ayıklama yığını blok işaretçisiyle ilişkili blok türünü/alt türünü döndürür. |
_CrtSetAllocHook |
İstemci tanımlı ayırma işlevini C çalışma zamanı hata ayıklama bellek ayırma işlemine bağlayarak yükleyin |
_CrtSetBreakAlloc |
Belirtilen nesne ayırma sipariş numarasında kesme noktası ayarlama |
_CrtSetDbgFlag |
Hata ayıklama yığını yöneticisinin _crtDbgFlag ayırma davranışını denetlemek için bayrağın durumunu alma veya değiştirme |
_CrtSetDumpClient |
Döküm türü bellek blokları için _CLIENT_BLOCK her hata ayıklama dökümü işlevi çağrıldığında çağrılan uygulama tanımlı bir işlev yükleyin |
_CrtSetReportFile |
Tarafından belirli bir rapor türü için hedef olarak kullanılacak dosya veya akışı tanımlama _CrtDbgReport |
_CrtSetReportHook |
İstemci tanımlı raporlama işlevini C çalışma zamanı hata ayıklama raporlama işlemine bağlayarak yükleyin |
_CrtSetReportHook2 , _CrtSetReportHookW2 |
İstemci tanımlı raporlama işlevini C çalışma zamanı hata ayıklama raporlama işlemine bağlayarak yükler veya kaldırır. |
_CrtSetReportMode |
Tarafından oluşturulan belirli bir rapor türü için genel hedefleri belirtin _CrtDbgReport |
_RPT[0,1,2,3,4] |
Bir biçim dizesi ve değişken sayıda bağımsız değişkenle çağırarak _CrtDbgReport hata ayıklama raporu oluşturarak uygulamanın ilerleme durumunu izleyin. Kaynak dosya ve satır numarası bilgisi sağlamaz. |
_RPTF[0,1,2,3,4] |
Makrolara _RPTn benzer, ancak rapor isteğinin kaynak dosya adını ve satır numarasını sağlar |
_calloc_dbg |
Bir hata ayıklama üst bilgisi için ek alan içeren yığında belirtilen sayıda bellek bloğu ayırma ve arabelleklerin üzerine yazma |
_expand_dbg |
Öbekte belirtilen bellek bloğunu genişleterek veya daraltarak yeniden boyutlandırma |
_free_dbg |
Yığındaki bir bellek bloğunu serbest bırakın |
_fullpath_dbg , _wfullpath_dbg |
Bellek ayırmak için kullanarak _malloc_dbg belirtilen göreli yol adı için mutlak veya tam yol adı oluşturun. |
_getcwd_dbg , _wgetcwd_dbg |
Bellek ayırmak için kullanarak _malloc_dbg geçerli çalışma dizinini alın. |
_malloc_dbg |
Yığında hata ayıklama üst bilgisi için fazladan alan içeren bir bellek bloğu ayırma ve arabelleklerin üzerine yazma |
_msize_dbg |
Yığındaki bir bellek bloğunun boyutunu hesaplama |
_realloc_dbg |
Bloğu taşıyarak ve/veya yeniden boyutlandırarak yığında belirtilen bellek bloğunu yeniden ayırma |
_strdup_dbg , _wcsdup_dbg |
Bellek ayırmak için kullanarak _malloc_dbg bir dizeyi yineler. |
_tempnam_dbg , _wtempnam_dbg |
Bellek ayırmak için kullanarak _malloc_dbg geçici dosyalar oluşturmak için kullanabileceğiniz adlar oluşturun. |
Kaynak kod formunda bulunmayan C çalışma zamanı yordamları
Hata ayıklayıcı, hata ayıklama işlemi sırasında C çalışma zamanı yordamlarının çoğu için kaynak kodda adım adım ilerleyebilmek için kullanılabilir. Ancak Microsoft, bazı teknolojilerin özel olduğunu düşünür ve bu nedenle bu yordamların bir alt kümesi için kaynak kodu sağlamaz. Bu yordamların çoğu özel durum işleme veya kayan nokta işleme gruplarına aittir, ancak birkaçı da dahil edilir. Aşağıdaki tabloda bu yordamlar listelemektedir.
Ve yordamlarının çoğunda kaynak kodu kullanılabilse de, kaynak kodunun printf
scanf
sağlanmayan başka bir yordama iç çağrı yapar.
Uygulamanın hata ayıklama derlemesinde farklı davranan yordamlar
Bazı C çalışma zamanı işlevleri ve C++ işleçleri, bir uygulamanın hata ayıklama derlemesinden çağrıldığında farklı davranır. (Bayrağı tanımlayarak _DEBUG
veya C çalışma zamanı kitaplığının hata ayıklama sürümüyle bağlantı kurarak uygulamanın hata ayıklama derlemesini oluşturabilirsiniz.) Davranış farklılıkları genellikle hata ayıklama işlemini desteklemek için yordam tarafından sağlanan ek özelliklerden veya bilgilerden oluşur. Aşağıdaki tabloda bu yordamlar listelemektedir.
C abort
yordamı
C assert
yordamı
C++ delete
işleci
C++ new
işleci
Ayrıca bkz.
Kategoriye göre Evrensel C çalışma zamanı yordamları
Çalışma zamanı hata denetimi