_CrtDbgReport, _CrtDbgReportW
Hata ayıklama iletisi içeren bir rapor oluşturur ve rapor üç olası hedefleri (yalnızca hata ayıklama sürümü) gönderir.
int _CrtDbgReport( int reportType, const char *filename, int linenumber, const char *moduleName, const char *format [, argument] ... ); int _CrtDbgReportW( int reportType, const wchar_t *filename, int linenumber, const wchar_t *moduleName, const wchar_t *format [, argument] ... );
Parametreler
reportType
Rapor türü: _CRT_WARN, _CRT_ERROR, ve _CRT_ASSERT.filename
İşaretçi iddia rapor oluştuğu kaynak dosyasının adını veya NULL.linenumber
Satır numarası iddia rapor oluştuğu kaynak dosyasındaki veya NULL.moduleName
İşaretçi Modülü (.exe veya .dll) adını burada iddia veya rapor oluştu.format
Kullanıcı iletisi oluşturmak için kullanılan biçimi-control dizesi işaretçisi.argument
Tarafından kullanılan isteğe bağlı değiştirme bağımsız format.
Dönüş Değeri
Tüm rapor hedefler için _CrtDbgReport ve _CrtDbgReportW herhangi bir hatayla bir hata oluştuğunda, -1 ve 0 döndürür.Ancak, rapor hedef bir hata ayıklama ileti penceresi ve kullanıcı olduğunda tıklattığında yeniden düğmesi, bu işlevler 1 döndürür.Kullanıcı durdurma düğmesi hata ayıklama ileti penceresinde, bu işlevler hemen durdurmak ve bir değer döndürmeyen.
_RPT, _RPTF hata ayıklama makro araması _CrtDbgReport raporları kendi hata ayıklama oluşturmak için.Bu makro geniş karakter sürümlerini de _ASSERT [E], _RPTWn ve _RPTFWn, kullanın _CrtDbgReportW raporları kendi hata ayıklama oluşturmak için.Zaman _CrtDbgReport veya _CrtDbgReportW 1, iade yalnızca zamanında (JIT) hata ayıklama etkin koşuluyla hata ayıklayıcısı, bu makro Başlat.
Notlar
_CrtDbgReportve _CrtDbgReportW hata ayıklama rapor üç farklı hedeflere gönderebilirsiniz: hata ayıklama rapor dosyası, bir hata ayıklama İzleyici ( Visual Studio hata ayıklayıcısı), veya bir hata ayıklama ileti penceresi.İki yapılandırma İşlevler, _CrtSetReportMode ve _CrtSetReportFile, hedef veya her rapor türü için hedefleri belirtmek için kullanılır.Bu işlevler raporlama hedef veya ayrı olarak denetlenecek her rapor türü için hedefleri izin verir.Örneğin, belirtmek olası bir reportType , _CRT_WARN yalnızca hata ayıklama izleyiciyi gönderilen, çalışırken bir reportType , _CRT_ASSERT bir hata ayıklama ileti penceresi ve bir kullanıcı tarafından tanımlanan rapor dosyası için gönderilemez.
_CrtDbgReportWgeniş karakter sürümü _CrtDbgReport.Çıkış ve dize tüm parametrelerinin içinde geniş karakter dizelerdir; Aksi takdirde tek bayt karakter sürüme özdeş olur.
_CrtDbgReportve _CrtDbgReportW koyarak tarafından hata ayıklama rapor için kullanıcı iletiyi oluşturmak argument[n] bağımsız değişkenler format tarafından tanımlanan aynı kuralları kullanarak, dize printf veya wprintf işlevleri.Bu işlevler sonra hata ayıklama raporu oluşturmak ve hedef veya hedefleri, geçerli rapor modlarını tabanlı belirlemek ve dosya için tanımlı reportType.Rapor bir hata ayıklama ileti penceresi gönderildiğinde filename, lineNumber, ve moduleName penceresinde görüntülenen bilgiler dahil edilir.
Aşağıdaki tablo rapor modu veya modları dosya ve sonuçta elde edilen davranışı için kullanılabilir seçenekleri listeler _CrtDbgReport ve _CrtDbgReportW.Bu seçenekleri < crtdbg.h > bit bayrak olarak tanımlanır.
Rapor modu |
Rapor dosyası |
_CrtDbgReport, _CrtDbgReportW davranışı |
---|---|---|
_CRTDBG_MODE_DEBUG |
Uygulanamaz |
Windows kullanarak iletisi Yazar OutputDebugString API. |
_CRTDBG_MODE_WNDW |
Uygulanamaz |
Windows çağırır MessageBox ile birlikte iletisini görüntülemek için ileti kutusu oluşturmak için API durdurma, yeniden deneme, ve Yoksay düğmeler.Bir kullanıcı durdurma, _CrtDbgReport veya _CrtDbgReport hemen durdurur.Bir kullanıcı yeniden, 1 döndürür.Bir kullanıcı Yoksay, uygulamayı yürütmeye devam eder ve _CrtDbgReport ve _CrtDbgReportW 0 döndürür.Bu tıklatarak Not Yoksay olduğunda bir hata koşulu var genellikle sonuçları "Tanımlanamayan davranışı." |
_CRTDBG_MODE_FILE |
__HFILE |
Kullanıcı tarafından sağlanan yazma iletiye HANDLE, Windows kullanarak WriteFile API ve dosya tanıtıcı; geçerliliğini doğrulayın değil Rapor dosyası açılırken ve geçerli bir dosya tanıtıcı geçirerek uygulama sorumludur. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDERR |
Yazma iletiye stderr. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDOUT |
Yazma iletiye stdout. |
Rapor bir, iki veya üç hedefleri veya herhangi bir hedef için hiç gönderilebilir.Rapor modu veya modları ve rapor dosyası belirtilmesi hakkında daha fazla bilgi için _CrtSetReportMode ve _CrtSetReportFile işlevleri.İşlevleri raporlama ve hata ayıklama makro kullanma hakkında daha fazla bilgi için Raporlama Makroları.
Uygulamanız tarafından sağlanan değerinden daha fazla esneklik gerekip gerekmediğini _CrtDbgReport ve _CrtDbgReportW, kendi raporlama işlevi yazma ve bunu kullanarak mekanizması raporlama C çalışma zamanı kitaplığı içine takma _CrtSetReportHook işlev.
Gereksinimler
Yordam |
Gerekli başlık |
---|---|
_CrtDbgReport |
< crtdbg.h > |
_CrtDbgReportW |
< crtdbg.h > |
_CrtDbgReportve _CrtDbgReportW Microsoft uzantıları.Daha fazla bilgi için Uyumluluk.
Kitaplıklar
Hata ayıklama sürümleri C çalışma zamanı kitaplıkları yalnızca.
Örnek
// crt_crtdbgreport.c
#include <crtdbg.h>
int main(int argc, char *argv[]) {
#ifdef _DEBUG
_CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}
Bakın crt_dbg2 rapor işlev değiştirmek nasıl bir örneği.