_CrtDbgReport
, _CrtDbgReportW
Genera un rapporto con un messaggio di debug e lo invia tre possibili destinazioni (solo versione di debug).
Sintassi
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] ...
);
Parametri
reportType
Tipo di segnalazione: _CRT_WARN
, _CRT_ERROR
e _CRT_ASSERT
.
filename
Puntatore al nome del file di origine in cui si è verificata l'asserzione o il rapporto o NULL
.
lineNumber
Numero di riga nel file di origine in cui si è verificata l'asserzione o il rapporto o NULL
.
moduleName
Puntatore al nome del modulo (.exe o .dll) in cui si è verificata l'asserzione o il rapporto.
format
Puntatore alla stringa di controllo del formato usata per creare il messaggio utente.
argument
Argomenti di sostituzione facoltativi usati da format
.
Valore restituito
Per tutte le destinazioni _CrtDbgReport
del report e _CrtDbgReportW
restituire -1 se si verifica un errore e 0 se non vengono rilevati errori. Tuttavia, quando la destinazione del report è una finestra di messaggio di debug e l'utente sceglie il pulsante Riprova , queste funzioni restituiscono 1. Se l'utente sceglie il pulsante Interrompi nella finestra Debug messaggio, queste funzioni interrompono immediatamente e non restituiscono un valore.
Le _RPT
macro di _RPTF
debug chiamano _CrtDbgReport
per generare i report di debug. Le versioni a caratteri wide di queste macro, insieme _ASSERT
a ,_RPTW
_ASSERTE
e _RPTFW
, usano _CrtDbgReportW
per generare i report di debug. Quando _CrtDbgReport
o _CrtDbgReportW
restituisce 1, queste macro avviano il debugger, se il debug JIT (Just-In-Time) è abilitato.
Osservazioni:
_CrtDbgReport
e _CrtDbgReportW
possono inviare il report di debug a tre destinazioni diverse: un file di report di debug, un monitoraggio di debug (debugger di Visual Studio) o una finestra di messaggio di debug. Due funzioni di configurazione, _CrtSetReportMode
e _CrtSetReportFile
, vengono usate per specificare la destinazione o le destinazioni per ogni tipo di report. Queste funzioni consentono alle destinazioni per la creazione dei rapporti per ogni tipo di rapporto di essere controllate separatamente. Ad esempio, è possibile specificare che un reportType
oggetto di _CRT_WARN
passa solo al monitoraggio di debug, mentre un reportType
di _CRT_ASSERT
passa sia a una finestra di messaggio di debug che a un file di report definito dall'utente.
_CrtDbgReportW
è la versione a caratteri wide di _CrtDbgReport
. Tutti i relativi parametri di output e stringa sono in stringhe di caratteri wide; in caso contrario, è identico alla versione di caratteri a byte singolo.
_CrtDbgReport
e _CrtDbgReportW
creare il messaggio utente per il report di debug sostituendo gli argument[n]
argomenti nella format
stringa, usando le stesse regole definite dalle printf
funzioni o wprintf
. Queste funzioni generano quindi il rapporto di debug e determinano la destinazione o le destinazioni in base alle modalità rapporto correnti e al file definito per reportType
. Quando il rapporto viene inviato a una finestra di messaggio di debug, filename
, lineNumber
e moduleName
sono inclusi nelle informazioni visualizzate nella finestra.
Nella tabella seguente sono illustrate le scelte disponibili per le modalità rapporto e il file e il comportamento risultante di _CrtDbgReport
e _CrtDbgReportW
. Queste opzioni sono definite come flag di bit in <crtdbg.h>.
Modalità rapporto | File di rapporto | Comportamento di _CrtDbgReport , _CrtDbgReportW |
---|---|---|
_CRTDBG_MODE_DEBUG |
Non applicabile | Scrive un messaggio usando l'API Windows OutputDebugString . |
_CRTDBG_MODE_WNDW |
Non applicabile | Chiama l'API Windows MessageBox per creare la finestra di messaggio per visualizzare il messaggio insieme ai pulsanti Interrompi, Riprova e Ignora . Se un utente sceglie Interrompi _CrtDbgReport o _CrtDbgReport interrompe immediatamente. Se un utente sceglie Riprova, restituisce 1. Se un utente sceglie Ignora, l'esecuzione continua e _CrtDbgReportW _CrtDbgReport restituisce 0. Se si sceglie Ignora quando esiste una condizione di errore, spesso si verifica un comportamento non definito. |
_CRTDBG_MODE_FILE |
__HFILE |
Scrive il messaggio fornito dall'utente HANDLE usando l'API Di Windows WriteFile e non verifica la validità dell'handle di file. L'applicazione è responsabile dell'apertura del file di report e del passaggio di un handle di file valido. |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDERR |
Scrive il messaggio in stderr . |
_CRTDBG_MODE_FILE |
_CRTDBG_FILE_STDOUT |
Scrive il messaggio in stdout . |
Il rapporto può essere inviato a una, due o tre destinazioni o a nessuna destinazione. Per altre informazioni su come specificare la modalità o le modalità del report e il file di report, vedere le _CrtSetReportMode
funzioni e _CrtSetReportFile
. Per altre informazioni sull'uso delle macro di debug e delle funzioni di creazione di report, vedere Macro per la creazione di report.
Se l'applicazione necessita di maggiore flessibilità rispetto a quella fornita da _CrtDbgReport
e _CrtDbgReportW
, è possibile scrivere una funzione di creazione di report personalizzata e associarla al meccanismo di creazione di report della libreria di runtime C usando la _CrtSetReportHook
funzione .
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_CrtDbgReport |
<crtdbg.h> |
_CrtDbgReportW |
<crtdbg.h> |
_CrtDbgReport
e _CrtDbgReportW
sono estensioni Microsoft. Per altre informazioni, vedere Compatibility.
Librerie
Solo le versioni di debug delle librerie di runtime di C.
Esempio
// crt_crtdbgreport.c
#include <crtdbg.h>
int main(int argc, char *argv[]) {
#ifdef _DEBUG
_CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}
Vedere crt_dbg2
per un esempio di come modificare la funzione di report.
Vedi anche
Routine di debug
_CrtSetReportMode
_CrtSetReportFile
printf
, _printf_l
, wprintf
_wprintf_l
_DEBUG