Rutinas de depuración

La versión de depuración de la biblioteca en tiempo de ejecución de C ofrece muchos servicios de diagnóstico que facilitan la depuración de programas y permiten a los desarrolladores:

  • Usar directamente funciones en tiempo de ejecución durante la depuración

  • Resolver aserciones, errores y excepciones

  • Realizar el seguimiento de las asignaciones del montón y evitar pérdidas de memoria

  • Proporcionar mensajes de depuración al usuario

Para utilizar estas rutinas es necesario definir la marca _DEBUG. Todas estas rutinas no hacen nada en una compilación comercial de una aplicación. Para obtener más información sobre cómo usar las nuevas rutinas de depuración, vea Técnicas de depuración de CRT.

Versiones de depuración de las rutinas de la biblioteca en tiempo de ejecución de C

Rutina

Utilice

Equivalente de .NET Framework

_ASSERT

Evalúa una expresión y genera un informe de depuración cuando el resultado es FALSE

System::Diagnostics::Debug::Assert

_ASSERTE

Parecida a _ASSERT, pero incluye la expresión del error en el informe generado

System::Diagnostics::Debug::Assert

_CrtCheckMemory

Confirma la integridad de los bloques de memoria asignados en el montón de depuración

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

Establece un punto de interrupción

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtDbgReport, _CrtDbgReportW

Genera un informe de depuración con un mensaje de usuario y envía el informe a tres destinos posibles

System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf

_CrtDoForAllClientObjects

Llama a una función suministrada por la aplicación para todos los tipos de _CLIENT_BLOCK del montón

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtDumpMemoryLeaks

Vuelca todos los bloques de memoria del montón de depuración cuando se ha producido una pérdida de memoria significativa

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtIsMemoryBlock

Comprueba que un bloque de memoria especificado está en el montón local y que tiene un identificador válido de tipo de bloque de montón de depuración

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtIsValidHeapPointer

Comprueba que un puntero especificado está en el montón local

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtIsValidPointer

Comprueba que un intervalo de memoria especificado es válido para lectura y escritura

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtMemCheckpoint

Obtiene el estado actual del montón de depuración y lo almacena en una estructura de _CrtMemState proporcionada por la aplicación

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtMemDifference

Compara si dos estados de memoria tienen diferencias significativas y devuelve los resultados

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtMemDumpAllObjectsSince

Vuelca la información sobre objetos del montón desde que se tomó un punto de comprobación especificado o desde que se empezó a ejecutar el programa

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtMemDumpStatistics

Vuelca la información de encabezado de depuración para un estado de memoria especificado con un formato legible para el usuario

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

Devuelve el tipo o subtipo de bloque asociado a un puntero de bloque especificado del montón de depuración.

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetAllocHook

Instala una función de asignación definida por el cliente enlazándola al proceso de asignación de memoria de depuración en tiempo de ejecución de C

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetBreakAlloc

Establece un punto de interrupción en un número de orden especificado de la asignación de objetos

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetDbgFlag

Recupera o modifica el estado de la marca _crtDbgFlag para controlar el comportamiento de asignación del administrador del montón de depuración

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetDumpClient

Instala una función definida por la aplicación a la que se llama cada vez que se llama a una función de volcado de depuración para volcar los bloques de memoria de tipo _CLIENT_BLOCK

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetReportFile

Identifica el archivo o flujo que se va a usar como destino de un tipo de informe concreto _CrtDbgReport

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetReportHook

Instala una función de creación de informes definida por el cliente enlazándola al proceso de creación de informes de depuración en tiempo de ejecución de C

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetReportHook2, _CrtSetReportHookW2

Instala o desinstala una función de generación de informes definida por el cliente enlazándola al proceso de creación de informes de depuración en tiempo de ejecución de C

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_CrtSetReportMode

Especifica los destinos generales de un tipo específico de informe generado por _CrtDbgReport

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

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

Realiza el seguimiento del progreso de la aplicación generando un informe de depuración mediante una llamada a _CrtDbgReport con una cadena de formato y un número variable de argumentos. No proporciona información sobre el archivo de código fuente y el número de línea.

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

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

Es parecida a las macros de _RPTn, pero proporciona el nombre del archivo de código fuente y el número de línea donde se originó la solicitud de informe

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_calloc_dbg

Asigna un número especificado de bloques de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescritura

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_expand_dbg

Cambia el tamaño de un bloque de memoria especificado del montón, expandiendo o contrayendo el bloque

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_free_dbg

Libera un bloque de memoria del montón

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_fullpath_dbg, _wfullpath_dbg

Crea un nombre de ruta de acceso absoluta o completa para el nombre de ruta de acceso relativa especificado, utilizando _malloc_dbg para asignar memoria

System::IO::File::Create

_getcwd_dbg, _wgetcwd_dbg

Obtiene el directorio de trabajo actual, usando _malloc_dbg para asignar memoria

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_malloc_dbg

Asigna un bloque de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescritura

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_msize_dbg

Calcula el tamaño de un bloque de memoria del montón

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_realloc_dbg

Reasigna un bloque de memoria especificado en el montón, para lo que lo mueve o lo cambia de tamaño

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

_strdup_dbg, _wcsdup_dbg

Duplica una cadena, usando _malloc_dbg para asignar memoria

System::String::Clone

_tempnam_dbg, _wtempnam_dbg

Genera nombres que se pueden usar para crear archivos temporales, usando _malloc_dbg para asignar memoria

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Las rutinas de depuración se pueden usar para recorrer el código fuente de la mayoría de las demás rutinas en tiempo de ejecución de C durante el proceso de depuración. Sin embargo, Microsoft considera que alguna tecnología es de su propiedad y, por consiguiente, no proporciona el código fuente de estas rutinas. La mayoría de estas rutinas pertenecen a los grupos de control de excepciones o de procesamiento de punto flotante, pero también se incluyen algunas otras. En la siguiente tabla se enumeran estas rutinas.

Rutinas en tiempo de ejecución de C no disponibles en formato de código fuente

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

 

* Aunque hay código fuente disponible para la mayor parte de esta rutina, realiza una llamada interna a otra rutina para la que no se proporciona código.

Ciertas funciones en tiempo de ejecución de C y algunos operadores de C++ se comportan de manera diferente cuando se les llama desde una versión de depuración de una aplicación. (Observe que una compilación de depuración de una aplicación se puede generar definiendo la marca _DEBUG o vinculándola a una versión de depuración de la biblioteca en tiempo de ejecución de C). Las diferencias de comportamiento suelen tener relación con características adicionales o información proporcionada por la rutina para posibilitar el proceso de depuración. En la siguiente tabla se enumeran estas rutinas.

Rutinas que se comportan de manera diferente en una compilación de depuración de una aplicación

Rutina abort de C

Operador delete de C++

Rutina assert de C

Operador new de C++

Vea también

Referencia

Rutinas de tiempo de ejecución por categoría

Comprobar errores en tiempo de ejecución