Déboguez des routines
La version debug de la bibliothèque Runtime C fournit de nombreux services de diagnostic qui facilite considérablement les programmes de débogage et permettant aux développeurs :
Étape directement dans les fonctions runtime pendant le débogage
assertions, erreurs, et exceptions de résolution
Suivez les allocations de tas et empêcher des fuites de mémoire
messages de débogage d'état à l'utilisateur
pour utiliser ces routines, la balise de _DEBUG doit être définie.Toutes ces routines n'ont aucun effet dans une version commerciale d'une application.Pour plus d'informations sur la façon d'utiliser les nouvelles routines de débogage, consultez Techniques de débogage CRT.
Versions debug des routines de la bibliothèque runtime C
routine |
Utilisation |
équivalent du .NET Framework |
---|---|---|
Évaluez une expression et générer un rapport de débogage lorsque le résultat est FAUX |
||
Semblable à _ASSERT, mais inclut l'expression dans le rapport généré |
||
Vérifiez l'intégrité des blocs de mémoire alloués sur le tas de débogage |
||
définit un point d'arrêt. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
générez un rapport de débogage avec un message utilisateur et envoyez l'état à trois destinations possibles |
System : : diagnostic : : débogage : : Écriture, System : : diagnostic : : débogage : : Writeline, System : : diagnostic : : débogage : : WriteIf, System : : diagnostic : : débogage : : WriteLineIf |
|
appelez une fonction fournie par l'application pour tous les types d' _CLIENT_BLOCK sur le tas |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Clichez tous les blocs de mémoire sur le tas de débogage lorsqu'une fuite de mémoire significatives s'est produite |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Vérifiez qu'un bloc de mémoire spécifié se trouve dans le tas local et qu'il a un identificateur type de bloc de tas de débogage valide |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
vérifie qu'un pointeur spécifié est dans le tas local |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Vérifiez qu'une plage spécifiée de mémoire est valide pour la lecture et l'écriture |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Obtenez l'état actuel du tas de débogage et stockez -le dans une structure fournie par l'application d' _CrtMemState |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Comparez deux états de la mémoire pour les différences notables et retournez les résultats |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Clichez des informations sur les objets sur le tas comme un point de contrôle spécifié a été pris ou le début de l'exécution du programme |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Clichez les informations d'en-tête du débogage d'un état spécifié de mémoire dans un formulaire utilisateur-lisible |
||
Retourne l'type de bloc/sous-type associés à un pointeur donné de bloc de tas de débogage. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Installez une fonction d'allocation définie par le client en l'accrochant dans le processus d'allocation de mémoire de débogage du runtime C |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Définissez un point d'arrêt sur un numéro de commande spécifié d'allocation d'objets |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Récupérez ou modifiez l'état de l'indicateur d' _crtDbgFlag pour contrôler le comportement d'allocation de tas de débogage |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Installez 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 faire un dump des blocs de mémoire de type d' _CLIENT_BLOCK |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Identifiez le fichier ou un flux de données pour être utilisé comme destination pour un type spécifique d'état par _CrtDbgReport |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Installez une fonction de rapport définie par le client en l'accrochant dans le processus de création de rapport de débogage du runtime C |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Installe ou désinstalle une fonction de rapport définie par le client en l'accrochant dans le processus de création de rapport de débogage du runtime C. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Spécifiez des destinations générales pour un type spécifique d'état généré par _CrtDbgReport |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Suivez 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 relative au fichier source et le numéro de ligne. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Semblable aux macros d' _RPTn , mais fournit le nom de fichier et le numéro de ligne source où la demande d'état a démarré |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Allouez un nombre spécifié de blocs de mémoire sur le tas avec l'espace supplémentaire pour un en-tête de débogage et remplacez les mémoires tampons |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Redimensionnez un bloc de mémoire spécifié sur le tas en développant ou en contractant le bloc |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
libérez un bloc de mémoire sur le tas |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Créez un absolu ou un chemin d'accès complet pour le nom du chemin d'accès relatif spécifié, à _malloc_dbg pour allouer de la mémoire. |
||
Obtenez le répertoire de travail actuel, à l'aide de _malloc_dbg pour allouer de la mémoire. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Allouez un bloc de mémoire sur le tas avec l'espace supplémentaire pour un en-tête de débogage et remplacez les mémoires tampons |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Calcule la taille d'un bloc de mémoire sur le tas |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
réaffectez un bloc de mémoire spécifié sur le tas en déplaçant et/ou en redimensionnant le bloc |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
|
Duplique une chaîne, à l'aide de _malloc_dbg pour allouer de la mémoire. |
||
Générez les noms que vous pouvez utiliser pour créer des fichiers temporaires, à l'aide de _malloc_dbg pour allouer de la mémoire. |
Non applicable.Pour appeler la fonction C standard, utilisez PInvoke.Pour plus d'informations, consultez l' exemples d'appel de code non managé. |
Les routines de débogage peuvent être utilisées pour parcourir le code source pour la plupart des autres routines runtime C pendant le processus de débogage.Toutefois, Microsoft considère une partie de la technologie propriétaire et, par conséquent, ne fournit pas le code source pour ces routines.La plupart de ces routines appartiennent à la gestion des exceptions ou à la virgule flottante traitement des groupes, mais d'autres sont également incluses.Le tableau suivant répertorie ces routines.
Routines d'exécution C qui ne sont pas disponibles dans le formulaire de code source
printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l* |
||
scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l* |
||
|
* Bien que le code source est disponible pour la plupart de cette routine, il effectue un appel interne à une autre routine pour laquelle le code source n'est pas donné.
Plusieurs fonctions runtime C et les opérateurs C++ se comportent différemment lorsqu'ils sont appelés d'une version debug d'une application.(Notez qu'une version debug d'une application peut être effectuée par l'un ou l'autre qui définit la balise d' _DEBUG ou en liant à une version debug de la bibliothèque Runtime C.) Les différences de comportement se composent généralement des fonctionnalités supplémentaires ou les informations fournies par la routine pour prendre en charge le processus de débogage.Le tableau suivant répertorie ces routines.
routines qui se comportent différemment dans une version debug d'une application
Routine C arrêt |
Opérateur C++ suppression |
Routine C assertion |
Opérateur C++ nouveau |
Pour plus d'informations sur l'utilisation des versions debug des opérateurs C++ dans le tableau précédent, consultez L'utilisation du tas de débogage du C++.