Routines de débogage
La version Debug de la bibliothèque Runtime C fournit de nombreux services de diagnostic qui facilitent les programmes de débogage et permettent aux développeurs :
Entre directement dans les fonctions runtime pendant le débogage
Assertions, erreurs, et exceptions de résolution
Retrouver les allocations de tas et empêcher les fuites de mémoire
Stocker les messages de débogage à l'utilisateur
Pour utiliser ces routines, l'indicateur _DEBUG doit être défini. 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 bibliothèque Runtime C
Routine |
Utilisation |
Équivalent de .NET Framework |
---|---|---|
Évaluer une expression et générer un rapport de débogage lorsque le résultat est FAUX |
||
Semblable à _ASSERT, mais inclut l'expression ayant échoué dans le rapport généré |
||
Confirmer 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 Exemples d'appel de plateforme. |
|
Créer un rapport de débogage avec un message utilisateur et envoyez le rapport à trois administrateurs possibles |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
Appelle une fonction fournie par l'application pour tous les types _CLIENT_BLOCK sur le tas |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Balancez tous les blocs mémoire sur le tas de débogage lorsqu'une fuite de mémoire significative s'est produite |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Vérifiez qu'un bloc de mémoire spécifié se trouve dans le tas local et qu'un identificateur de bloc de tas de débogage valide |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
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 Exemples d'appel de plateforme. |
|
Vérifiez qu'une plage spécifiée de mémoire est valide pour lire et écrire |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Obtenez l'état actuel du tas de débogage et stockez-le dans une structure fournie par l'application _CrtMemState. |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Compare deux états de 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 Exemples d'appel de plateforme. |
|
Balancez les informations sur les objets sur le tas depuis qu'un point de contrôle spécifié a été passé 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 Exemples d'appel de plateforme. |
|
Balancez les informations d'en-tête du débogage d'un état spécifié de mémoire dans un formulaire lisible par les utilisateurs |
||
Retourne le type/sous-type de bloc associé à 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 Exemples d'appel de plateforme. |
|
Installe une fonction d'allocation définie par le client en l'accrochant dans le processus d'allocation mémoire de débogage du runtime C |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Définissez un point d'arrêt sur un numéro de commande spécifié d'allocation d'objet |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Récupérez ou modifier l'état de l'indicateur d'un _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 Exemples d'appel de plateforme. |
|
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 vider les blocs de mémoire de type _CLIENT_BLOCK. |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Identifiez le fichier ou un flux de données pouvant être utilisé comme destination pour un type spécifique de rapport par _CrtDbgReport |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Installez une fonction de rapport définie par le client en l'accrochant dans le processus de création de débogage du runtime C |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Installe ou désinstalle une fonction de rapport définie par le client en l'accrochant dans le processus de création de débogage du runtime C (version Debug uniquement). |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Spécifiez des destinations générales pour un type spécifique de rapport généré par _CrtDbgReport |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
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 de fichier source et de numéro de ligne. |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Comme les macros _RPTn, mais fournit le nom de fichier et le numéro de ligne source où la demande de rapports a démarré |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
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 Exemples d'appel de plateforme. |
|
Redimensionner 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 Exemples d'appel de plateforme. |
|
Libérer un bloc de mémoire sur le tas |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Créez un chemin d'accès absolu ou complet pour le chemin d'accès relatif spécifié, à _malloc_dbg pour allouer de la mémoire. |
||
Obtenez le répertoire de travail actuel, en utilisant _malloc_dbg pour allouer de la mémoire. |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
|
Allouez un bloc 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 Exemples d'appel de plateforme. |
|
Calculez 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 Exemples d'appel de plateforme. |
|
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 Exemples d'appel de plateforme. |
|
Duplique une chaîne, en utilisant _malloc_dbg pour allouer de la mémoire. |
||
Générer des noms utilisables pour créer des fichiers temporaires, en utilisant _malloc_dbg pour allouer de la mémoire. |
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme. |
Les routines de débogage peuvent être utilisées pour parcourir le code source pour la plupart des autres routines d'exécution C pendant le processus de débogage. Toutefois, Microsoft considère certaines 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 à virgule flottante traitement des groupes, mais d'autres sont également incluses. Le tableau suivant répertorie ces routines.
Routines Runtime C non disponibles sous forme de code source
* Bien que du code source soit disponible pour la plupart de cette routine, il effectue un appel interne à une autre routine pour laquelle le code source n'est pas donné.
Certaines 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 l'indicateur _DEBUG ou une liaison avec 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 des 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. |
Operateur C++ effacer. |
Routine C assertion. |
Operateur C++ nouveau. |