_CrtDbgReport
, _CrtDbgReportW
Hata ayıklama iletisiyle bir rapor oluşturur ve raporu üç olası hedefe gönderir (yalnızca hata ayıklama sürümü).
Sözdizimi
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
Onay/raporun oluştuğu kaynak dosyanın adına işaretçi veya NULL
.
lineNumber
Onay/raporun oluştuğu kaynak dosyadaki satır numarası veya NULL
.
moduleName
Onay veya raporun oluştuğu modülün (.exe veya .dll) adına işaretçi.
format
Kullanıcı iletisini oluşturmak için kullanılan biçim denetimi dizesi işaretçisi.
argument
tarafından format
kullanılan isteğe bağlı değiştirme bağımsız değişkenleri.
Dönüş değeri
Tüm rapor hedefleri _CrtDbgReport
için ve _CrtDbgReportW
hata oluşursa -1, hatayla karşılaşılmadıysa 0 döndürür. Ancak, rapor hedefi bir hata ayıklama iletisi penceresi olduğunda ve kullanıcı Yeniden Dene düğmesini seçtiğinde, bu işlevler 1 döndürür. Kullanıcı hata ayıklama iletisi penceresinde Durdur düğmesini seçerse, bu işlevler hemen durdurulup bir değer döndürmez.
hata ayıklama raporlarını oluşturmak için , _RPTF
hata ayıklama makroları çağrısı_CrtDbgReport
._RPT
Bu makroların , ve _RPTFW
ile _ASSERTE
_ASSERT
_RPTW
birlikte geniş karakterli sürümleri, hata ayıklama raporlarını oluşturmak için kullanır._CrtDbgReportW
1 olduğunda _CrtDbgReport
veya _CrtDbgReportW
döndürdiğinde, tam zamanında (JIT) hata ayıklama etkinleştirildiyse, bu makrolar hata ayıklayıcıyı başlatır.
Açıklamalar
_CrtDbgReport
hata _CrtDbgReportW
ayıklama raporunu üç farklı hedefe gönderebilir: hata ayıklama raporu dosyası, hata ayıklama izleyicisi (Visual Studio hata ayıklayıcısı) veya hata ayıklama iletisi penceresi. Her rapor türünün hedefini veya hedeflerini belirtmek için iki yapılandırma işlevi _CrtSetReportMode
ve _CrtSetReportFile
kullanılır. Bu işlevler, her rapor türü için raporlama hedefinin veya hedeflerinin ayrı olarak denetlenebilmesini sağlar. Örneğin, bir reportType
_CRT_WARN
hata ayıklama izleyicisine yalnızca bir hata ayıklama izleyicisine, bir reportType
hata _CRT_ASSERT
ayıklama iletisi penceresine ve kullanıcı tanımlı rapor dosyasına gider.
_CrtDbgReportW
, öğesinin geniş karakterli sürümüdür _CrtDbgReport
. Tüm çıkış ve dize parametreleri geniş karakterli dizelerdedir; aksi takdirde tek baytlık karakter sürümüyle aynıdır.
_CrtDbgReport
ve _CrtDbgReportW
veya wprintf
işlevleri tarafından printf
tanımlanan kuralları kullanarak bağımsız değişkenleri dizeye format
değiştirerek argument[n]
hata ayıklama raporu için kullanıcı iletisini oluşturun. Bu işlevler daha sonra hata ayıklama raporunu oluşturur ve için reportType
tanımlanan geçerli rapor modlarını ve dosyasını temel alarak hedefi veya hedefleri belirler. Rapor bir hata ayıklama iletisi penceresine gönderildiğinde, filename
, lineNumber
ve moduleName
penceresinde görüntülenen bilgilere eklenir.
Aşağıdaki tabloda, rapor modu veya modları ve dosyası için kullanılabilir seçenekler ile ve _CrtDbgReportW
'in _CrtDbgReport
elde edilen davranışı listeleniyor. Bu seçenekler crtdbg.h> dosyasında <bit bayrakları olarak tanımlanır.
Rapor modu | Rapor dosyası | _CrtDbgReport , _CrtDbgReportW davranış |
---|---|---|
_CRTDBG_MODE_DEBUG |
Uygulanamaz | Windows OutputDebugString API kullanarak ileti yazar. |
_CRTDBG_MODE_WNDW |
Uygulanamaz | İptal, Yeniden Dene ve Yoksay düğmeleriyle birlikte iletiyi görüntülemek üzere ileti kutusu oluşturmak için Windows MessageBox API'sini çağırır. Kullanıcı Durdur'u _CrtDbgReport seçerse veya _CrtDbgReport hemen durdurursa. Kullanıcı Yeniden Dene'yi seçerse 1 döndürür. Kullanıcı Yoksay'ı seçerse yürütme devam eder ve _CrtDbgReport _CrtDbgReportW 0 döndürür. Bir hata koşulu mevcut olduğunda Yoksay'ın seçilmesi genellikle tanımsız davranışla sonuçlanır. |
_CRTDBG_MODE_FILE |
__HFILE |
Windows WriteFile API'sini kullanarak kullanıcı tarafından sağlanan HANDLE öğesine ileti yazar ve dosya tanıtıcısının geçerliliğini doğrulamaz; uygulama rapor dosyasını açmak ve geçerli bir dosya tanıtıcısı geçirmekten sorumludur. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDERR |
İletiyi öğesine stderr yazar. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDOUT |
İletiyi öğesine stdout yazar. |
Rapor bir, iki veya üç hedefe veya hiç hedefe gönderilebilir. Rapor modunu veya modlarını ve rapor dosyasını belirtme hakkında daha fazla bilgi için ve işlevlerine _CrtSetReportMode
_CrtSetReportFile
bakın. Hata ayıklama makrolarını ve raporlama işlevlerini kullanma hakkında daha fazla bilgi için bkz . Raporlama için makrolar.
Uygulamanızın ve _CrtDbgReportW
tarafından _CrtDbgReport
sağlanandan daha fazla esnekliğe ihtiyacı varsa, kendi raporlama işlevinizi yazabilir ve işlevini kullanarak C çalışma zamanı kitaplığı raporlama mekanizmasına _CrtSetReportHook
bağlayabilirsiniz.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_CrtDbgReport |
<crtdbg.h> |
_CrtDbgReportW |
<crtdbg.h> |
_CrtDbgReport
ve _CrtDbgReportW
Microsoft uzantılarıdır. Daha fazla bilgi için bkz . Uyumluluk.
Kitaplıklar
Yalnızca C çalışma zamanı kitaplıklarının sürümlerinde hata ayıklama.
Örnek
// crt_crtdbgreport.c
#include <crtdbg.h>
int main(int argc, char *argv[]) {
#ifdef _DEBUG
_CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}
Rapor işlevini değiştirme örneği için bkz crt_dbg2
.
Ayrıca bkz.
Hata ayıklama yordamları
_CrtSetReportMode
_CrtSetReportFile
printf
, _printf_l
, wprintf
, _wprintf_l
_DEBUG