Partager via


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

_ASSERT

Évaluer une expression et générer un rapport de débogage lorsque le résultat est FAUX

System::Diagnostics::Debug::Assert

_ASSERTE

Semblable à _ASSERT, mais inclut l'expression ayant échoué dans le rapport généré

System::Diagnostics::Debug::Assert

_CrtCheckMemory

Confirmer l'intégrité des blocs de mémoire alloués sur le tas de débogage

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

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.

_CrtDbgReport, _CrtDbgReportW

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

_CrtDoForAllClientObjects

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.

_CrtDumpMemoryLeaks

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.

_CrtIsMemoryBlock

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.

_CrtIsValidHeapPointer

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.

_CrtIsValidPointer

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.

_CrtMemCheckpoint

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.

_CrtMemDifference

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.

_CrtMemDumpAllObjectsSince

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.

_CrtMemDumpStatistics

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

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

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.

_CrtSetAllocHook

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.

_CrtSetBreakAlloc

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.

_CrtSetDbgFlag

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.

_CrtSetDumpClient

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.

_CrtSetReportFile

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.

_CrtSetReportHook

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.

_CrtSetReportHook2, _CrtSetReportHookW2

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.

_CrtSetReportMode

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.

_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 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.

_RPTF [0,1,2,3,4]

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.

_calloc_dbg

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.

_expand_dbg

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.

_free_dbg

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.

_fullpath_dbg, _wfullpath_dbg

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.

System::IO::File::Create

_getcwd_dbg, _wgetcwd_dbg

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.

_malloc_dbg

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.

_msize_dbg

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.

_realloc_dbg

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.

_strdup_dbg, _wcsdup_dbg

Duplique une chaîne, en utilisant _malloc_dbg pour allouer de la mémoire.

System::String::Clone

_tempnam_dbg, _wtempnam_dbg

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

acos, acosf, acosl

_fpclass

_nextafter

asin

_fpieee_flt

pow

atan, atan2

_fpreset

printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l*

_cabs

frexp

_scalb

ceil

_hypot

scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l*

_chgsign, _chgsignf, _chgsignl

_isnan

setjmp

_clear87, _clearfp

_j0

sin

_control87, _controlfp, __control87_2

_j1

sinh

copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl

_jn

sqrt

cos

ldexp

_status87, _statusfp

cosh

log

tan

Exp

log10

tanh

fabs

_logb

_y0

_finite

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

* 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.

Voir aussi

Référence

Routines runtime par catégorie

Vérifications des erreurs au moment de l'exécution