_CrtDbgReport, _CrtDbgReportW

Génère un rapport avec un message de débogage et envoie ce rapport vers trois destinations possibles (version de débogage uniquement).

Syntaxe

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] ...
);

Paramètres

reportType
Type de rapport : _CRT_WARN, _CRT_ERROR et _CRT_ASSERT.

filename
Pointeur vers le nom du fichier source où l'assertion/rapport s'est produit ou NULL.

lineNumber
Numéro de ligne dans le fichier source où l'assertion/rapport s'est produit ou NULL.

moduleName
Pointeur vers le nom du module (.exe ou .dll) où l'assertion ou le rapport s'est produit.

format
Pointeur vers la chaîne de contrôle de format utilisée pour créer le message utilisateur.

argument
Arguments de substitution facultatifs utilisés par format.

Valeur retournée

Pour toutes les destinations de rapport et _CrtDbgReport_CrtDbgReportW retournez -1 si une erreur se produit et 0 si aucune erreur n’est rencontrée. Toutefois, lorsque la destination du rapport est une fenêtre de message de débogage et que l’utilisateur choisit le bouton Réessayer , ces fonctions retournent 1. Si l’utilisateur choisit le bouton Abandonner dans la fenêtre Message de débogage, ces fonctions abandonnent immédiatement et ne retournent pas de valeur.

Les _RPTmacros de débogage appellent _CrtDbgReport_RPTF pour générer leurs rapports de débogage. Les versions à caractères larges de ces macros, ainsi que _ASSERT, _RPTW_ASSERTEet _RPTFW, utilisent _CrtDbgReportW pour générer leurs rapports de débogage. Quand _CrtDbgReport ou _CrtDbgReportW retourne 1, ces macros démarrent le débogueur, si le débogage juste-à-temps (JIT) est activé.

Notes

_CrtDbgReport et _CrtDbgReportW peut envoyer le rapport de débogage à trois destinations différentes : un fichier de rapport de débogage, un moniteur de débogage (débogueur Visual Studio) ou une fenêtre de message de débogage. Deux fonctions de configuration et _CrtSetReportMode_CrtSetReportFile, sont utilisées pour spécifier la destination ou les destinations pour chaque type de rapport. Ces fonctions permettent de contrôler séparément la ou les destinations de chaque type de rapport. Par exemple, il est possible de spécifier qu’une reportType seule _CRT_WARN passe au moniteur de débogage, tandis qu’elle reportType_CRT_ASSERT accède à la fois à une fenêtre de message de débogage et à un fichier de rapport défini par l’utilisateur.

_CrtDbgReportW est la version à caractères larges de _CrtDbgReport. Tous ses paramètres de sortie et de chaîne se trouvent dans des chaînes à caractères larges ; sinon, il est identique à la version de caractère d’un octet.

_CrtDbgReportet _CrtDbgReportW créez le message utilisateur pour le rapport de débogage en remplaçant les argument[n] arguments dans la format chaîne à l’aide des mêmes règles définies par le ou wprintf les printf fonctions. Ces fonctions génèrent ensuite le rapport de débogage et déterminent la ou les destinations, en fonction des modes de rapport actifs et du fichier de rapport défini pour reportType. Quand le rapport est envoyé vers une fenêtre de message de débogage, filename, lineNumber et moduleName figurent parmi les informations affichées dans la fenêtre.

Le tableau suivant répertorie les options disponibles pour le ou les modes de rapport et le fichier de rapport, ainsi que le comportement résultant de _CrtDbgReport et _CrtDbgReportW. Ces options sont définies en tant qu’indicateurs de bits dans <crtdbg.h>.

Mode de rapport Fichier de rapport Comportement de _CrtDbgReport et _CrtDbgReportW
_CRTDBG_MODE_DEBUG Non applicable Écrit le message à l’aide de l’API Windows OutputDebugString .
_CRTDBG_MODE_WNDW Non applicable Appelle l’API Windows MessageBox pour créer une zone de message pour afficher le message avec les boutons Abandonner, Réessayer et Ignorer . Si un utilisateur choisit Abort ou _CrtDbgReport_CrtDbgReport abandonne immédiatement. Si un utilisateur choisit Réessayer, il retourne 1. Si un utilisateur choisit Ignorer, l’exécution continue et _CrtDbgReport_CrtDbgReportW retourne 0. Le choix de l’option Ignorer lorsqu’une condition d’erreur existe entraîne souvent un comportement non défini.
_CRTDBG_MODE_FILE __HFILE Écrit le message fourni par HANDLEl’utilisateur, à l’aide de l’API Windows WriteFile et ne vérifie pas la validité du handle de fichier ; l’application est chargée d’ouvrir le fichier de rapport et de transmettre un handle de fichier valide.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDERR Écrit un message dans stderr.
_CRTDBG_MODE_FILE _CRTDBG_FILE_STDOUT Écrit un message dans stdout.

Le rapport peut être envoyé à une, deux ou trois destinations ou à aucune. Pour plus d’informations sur la spécification du mode de rapport ou des modes et du fichier de rapport, consultez les fonctions et _CrtSetReportFile les _CrtSetReportMode fonctions. Pour plus d’informations sur l’utilisation des macros de débogage et des fonctions de création de rapports, consultez Macros pour la création de rapports.

Si votre application a besoin d’une plus grande flexibilité que celle fournie et _CrtDbgReport_CrtDbgReportWque vous pouvez écrire votre propre fonction de création de rapports et la connecter au mécanisme de création de rapports de bibliothèque runtime C à l’aide de la _CrtSetReportHook fonction.

Spécifications

Routine En-tête requis
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>

_CrtDbgReport et _CrtDbgReportW sont des extensions Microsoft. Pour plus d'informations, voir Compatibilité.

Bibliothèques

Uniquement les versions de débogage des bibliothèques Runtime C.

Exemple

// crt_crtdbgreport.c
#include <crtdbg.h>

int main(int argc, char *argv[]) {
#ifdef _DEBUG
   _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, argv[0], NULL);
#endif
}

Consultez crt_dbg2 un exemple de modification de la fonction de rapport.

Voir aussi

Routines de débogage
_CrtSetReportMode
_CrtSetReportFile
printf, _printf_l, wprintf, _wprintf_l
_DEBUG