Routines de débogage
La version Debug de la bibliothèque Runtime C fournit de nombreux services de diagnostic qui facilitent le débogage des programmes et permettent aux développeurs de :
passer directement dans les fonctions d’exécution pendant le débogage ;
résoudre les assertions, les erreurs et les exceptions ;
suivre les allocations de tas et empêcher les fuites de mémoire ;
signaler des messages de débogage à l’utilisateur.
Versions Debug des routines de la bibliothèque Runtime C
Pour utiliser ces routines, l’indicateur _DEBUG
doit être défini. Toutes ces routines ne font rien dans une version commerciale d’une application. Pour plus d’informations sur l’utilisation des nouvelles routines de débogage, consultez les techniques de débogage CRT.
Routine | Utiliser |
---|---|
_ASSERT |
Évaluer une expression et générer un rapport de débogage lorsque le résultat est FALSE |
_ASSERTE |
Semblable à _ASSERT , mais inclut l’expression qui a échoué dans le rapport généré |
_CrtCheckMemory |
Confirmer l’intégrité des blocs de mémoire alloués sur le tas de débogage |
_CrtDbgBreak |
Définir un point d’arrêt |
_CrtDbgReport , _CrtDbgReportW |
Générer un rapport de débogage avec un message de l’utilisateur et envoyer le rapport à trois destinations possibles |
_CrtDoForAllClientObjects |
Appeler une fonction fournie par l’application pour tous les types _CLIENT_BLOCK sur le tas |
_CrtDumpMemoryLeaks |
Vider tous les blocs de mémoire sur le tas de débogage quand une fuite de mémoire importante s’est produite |
_CrtIsMemoryBlock |
Vérifier qu’un bloc de mémoire spécifié se trouve dans le tas local et qu’il a un identificateur de type de bloc de tas de débogage valide |
_CrtIsValidHeapPointer |
Vérifier qu’un pointeur spécifié se trouve dans le tas local |
_CrtIsValidPointer |
Vérifier qu’une plage de mémoire spécifiée est valide pour la lecture et l’écriture |
_CrtMemCheckpoint |
Obtenir l’état actuel du tas de débogage et le stocker dans une structure _CrtMemState fournie par l’application |
_CrtMemDifference |
Comparer deux états de mémoire pour déterminer des différences significatives et retourner les résultats |
_CrtMemDumpAllObjectsSince |
Vider des informations sur des objets du tas depuis un point de contrôle spécifié ou le début de l’exécution du programme |
_CrtMemDumpStatistics |
Vider les informations d’en-tête de débogage pour un état de mémoire spécifié dans un format lisible par l’utilisateur |
_CrtReportBlockType |
Retourne le type/sous-type de bloc associé à un pointeur de bloc de tas de débogage donné. |
_CrtSetAllocHook |
Installer une fonction d’allocation définie par le client en la raccordant au processus d’allocation de mémoire de débogage du runtime C |
_CrtSetBreakAlloc |
Définir un point d’arrêt sur un numéro d’ordre d’allocation d’objet spécifié |
_CrtSetDbgFlag |
Récupérer ou modifier l’état de l’indicateur _crtDbgFlag pour contrôler le comportement d’allocation du gestionnaire du tas de débogage |
_CrtSetDumpClient |
Installer une fonction définie par l’application qui est appelée chaque fois qu’une fonction de vidage du débogage est appelée pour vider des blocs de mémoire de type _CLIENT_BLOCK |
_CrtSetReportFile |
Identifier le fichier ou flux que _CrtDbgReport doit utiliser en tant que destination d’un type de rapport spécifique |
_CrtSetReportHook |
Installer une fonction de création de rapports définie par le client en la raccordant au processus de création de rapports de débogage du runtime C |
_CrtSetReportHook2 , _CrtSetReportHookW2 |
Installer ou désinstaller une fonction de création de rapports définie par le client en la raccordant au processus de création de rapports de débogage du runtime C |
_CrtSetReportMode |
Spécifier la ou les destinations générales d’un type de rapport spécifique généré par _CrtDbgReport |
_RPT[0,1,2,3,4] |
Suivre la progression de l’application en générant un rapport de débogage en appelant _CrtDbgReport avec une chaîne de format et un nombre variable d’arguments. Ne fournit aucune information sur le fichier source ou le numéro de ligne. |
_RPTF[0,1,2,3,4] |
Similaire aux macros _RPTn , mais fournit le nom du fichier source et le numéro de ligne d’où provient la demande de rapport |
_calloc_dbg |
Allouer un nombre spécifié de blocs de mémoire sur le tas avec un espace supplémentaire pour un en-tête de débogage et remplacer les mémoires tampons |
_expand_dbg |
Redimensionner un bloc de mémoire spécifié sur le tas l’augmentant ou en le diminuant |
_free_dbg |
Libérer un bloc de mémoire sur le tas |
_fullpath_dbg , _wfullpath_dbg |
Créez un nom de chemin d’accès absolu ou complet pour le nom de chemin relatif spécifié, à l’aide de _malloc_dbg l’allocation de mémoire. |
_getcwd_dbg , _wgetcwd_dbg |
Obtenez le répertoire de travail actuel à l’aide _malloc_dbg de l’allocation de mémoire. |
_malloc_dbg |
Allouer un bloc de mémoire sur le tas avec un espace supplémentaire pour un en-tête de débogage et remplacer des mémoires tampons |
_msize_dbg |
Calculer la taille d’un bloc de mémoire dans le tas |
_realloc_dbg |
Réallouer un bloc de mémoire spécifié dans le tas en déplaçant et/ou redimensionnant le bloc |
_strdup_dbg , _wcsdup_dbg |
Dupliquer une chaîne à l’aide _malloc_dbg de l’allocation de mémoire. |
_tempnam_dbg , _wtempnam_dbg |
Générez des noms que vous pouvez utiliser pour créer des fichiers temporaires à l’aide _malloc_dbg de l’allocation de mémoire. |
Routines runtime C qui ne sont pas disponibles dans le formulaire de code source
Le débogueur peut être utilisé pour parcourir le code source de la plupart des autres routines runtime C pendant le processus de débogage. Toutefois, Microsoft considère que certaines technologies sont propriétaires et, par conséquent, ne fournit pas le code source pour un sous-ensemble de ces routines. La plupart de ces routines appartiennent à la gestion des exceptions ou aux groupes de traitement à virgule flottante, mais certaines autres sont également incluses. Le tableau suivant répertorie ces routines.
Bien que le code source soit disponible pour la printf
plupart des routines, scanf
ils effectuent un appel interne à une autre routine pour laquelle le code source n’est pas fourni.
Routines qui se comportent différemment dans une version Debug d’une application
Certaines fonctions de Runtime C et certains opérateurs C++ se comportent différemment quand ils sont appelés à partir d’une version Debug d’une application. (Vous pouvez créer une build de débogage d’une application en définissant l’indicateur _DEBUG
ou en liant une version de débogage de la bibliothèque runtime C.) Les différences comportementales se composent généralement de fonctionnalités ou d’informations supplémentaires fournies par la routine pour prendre en charge le processus de débogage. Le tableau suivant répertorie ces routines.
Routine C abort
Routine C assert
Opérateur C++ delete
Opérateur C++ new
Voir aussi
Routines du runtime C universel par catégorie
Vérification des erreurs d’exécution