Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 _RPTmacro di _RPTF debug chiamano _CrtDbgReport per generare i report di debug. Le versioni a caratteri wide di queste macro, insieme _ASSERTa ,_RPTW _ASSERTEe _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 HANDLEusando 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