Partage via


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 Utilisation
_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
Erreur d’exécution case activée ing