_CrtSetReportMode

Specifica la destinazione o le destinazioni per un tipo di report specifico generato da _CrtDbgReport ed eventuali macro che chiamano _CrtDbgReport, _CrtDbgReportWad esempio_ASSERT , , _ASSERTE_ASSERT_EXPR macro e _RPT, _RPTF, _RPTW_RPTFW macro (solo versione di debug).

Sintassi

int _CrtSetReportMode(
   int reportType,
   int reportMode
);

Parametri

reportType
Tipo di segnalazione: _CRT_WARN, _CRT_ERROR e _CRT_ASSERT.

reportMode
Nuova modalità di report o modalità per reportType.

Valore restituito

Al termine, _CrtSetReportMode restituisce la precedente o le precedenti modalità di report per il tipo di report specificato in reportType. Se viene passato un valore non valido come reportType o viene specificata una modalità non valida per reportMode, _CrtSetReportMode richiama il gestore di parametri non validi come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno suEINVAL e restituisce -1. Per altre informazioni, vedereerrno, _doserrno, _sys_errliste _sys_nerr.

Osservazioni:

_CrtSetReportMode specifica la destinazione di output per _CrtDbgReport. Poiché le macro _ASSERT, _ASSERTE, _RPT, e _RPTF chiamano _CrtDbgReport, _CrtSetReportMode specifica la destinazione dell'output di testo determinato con queste macro.

Quando _DEBUG non è definito, le chiamate a _CrtSetReportMode vengono rimosse durante la pre-elaborazione.

Se non si chiama _CrtSetReportMode per definire la destinazione di output dei messaggi, vengono applicate le impostazioni predefinite seguenti:

  • Le asserzioni non riuscite e gli errori di asserzione vengono indirizzati a una finestra di messaggio di debug.

  • Gli avvisi da applicazioni di Windows vengono inviati alla finestra di output del debugger.

  • Gli avvisi delle applicazioni console non vengono visualizzati.

Nella tabella seguente sono elencati i tipi di report definiti in Crtdbg.h.

Tipo di report Descrizione
_CRT_WARN Avvisi, messaggi e informazioni che non richiedono attenzione immediata.
_CRT_ERROR Errori e problemi irreversibili che richiedono attenzione immediata.
_CRT_ASSERT Asserzioni non riuscite (espressioni dichiarate che restituiscono FALSE).

La funzione _CrtSetReportMode assegna la nuova modalità di report specificata in reportMode al tipo di report specificato in reportType e restituisce la modalità report definita in precedenza per reportType. La tabella seguente elenca le scelte disponibili per reportMode e il comportamento risultante di _CrtDbgReport. Queste opzioni sono definite flag di bit in Crtdbg.h.

Modalità rapporto Comportamento _CrtDbgReport
_CRTDBG_MODE_DEBUG Scrive il messaggio alla finestra di output del debugger.
_CRTDBG_MODE_FILE Scrive il messaggio a un handle di file specificato dall'utente. _CrtSetReportFile deve essere chiamato per definire il file o il flusso specifico da usare come destinazione.
_CRTDBG_MODE_WNDW Crea una finestra di messaggio per visualizzare il messaggio insieme ai pulsanti Interrompi, Riprova e Ignora .
_CRTDBG_REPORT_MODE Restituisce reportMode per il reportType specificato:

1 _CRTDBG_MODE_FILE

2 _CRTDBG_MODE_DEBUG

4 _CRTDBG_MODE_WNDW

Ogni tipo di report può essere riportato tramite uno, due o tre modalità oppure senza modalità. Pertanto, è possibile avere più di una destinazione definita per un singolo tipo di report. Ad esempio, il frammento di codice seguente causa errori di asserzione da essere inviati a una finestra di messaggio di debug e a stderr:

_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );

Inoltre, è possibile controllare separatamente la modalità di creazione di report o le modalità per ogni tipo di report. Ad esempio, è possibile specificare che un reportType di _CRT_WARN passa a una stringa di debug di output, mentre _CRT_ASSERT viene visualizzato usando una finestra del messaggio di debug e viene inviato a stderr, come illustrato in precedenza.

Requisiti

Ciclo Intestazione obbligatoria Intestazione facoltativa
_CrtSetReportMode <crtdbg.h> <errno.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Librerie: esegue il debug solo delle versioni delle librerie di runtime C.

Vedi anche

Routine di debug