_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 _RPT
macros 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
_ASSERTE
et _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.
_CrtDbgReport
et _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 HANDLE l’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
_CrtDbgReportW
que 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