Rutinas de depuración

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

RutinaUtiliceEquivalente de .NET Framework
_ASSERTEvalúa una expresión y genera un informe de depuración cuando el resultado es FALSE<caps:sentence id="tgt15" sentenceid="14fd9bf776829d73028df00162f7533f" class="tgtSentence">System::Diagnostics::Debug::Assert</caps:sentence>
_ASSERTEParecida a _ASSERT, pero incluye la expresión del error en el informe generado<caps:sentence id="tgt18" sentenceid="14fd9bf776829d73028df00162f7533f" class="tgtSentence">System::Diagnostics::Debug::Assert</caps:sentence>
_CrtCheckMemoryConfirma la integridad de los bloques de memoria asignados en el montón de depuración<caps:sentence id="tgt20" sentenceid="e42975224af21ff11a761e6a6bdbd602" class="tgtSentence">System::Diagnostics::PerformanceCounter</caps:sentence>
_CrtDbgBreakEstablece un punto de interrupciónNo 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, _CrtDbgReportWGenera un informe de depuración con un mensaje de usuario y envía el informe a tres destinos posiblesSystem::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf
_CrtDoForAllClientObjectsLlama a una función suministrada por la aplicación para todos los tipos de _CLIENT_BLOCK del montónNo 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.
_CrtDumpMemoryLeaksVuelca todos los bloques de memoria del montón de depuración cuando se ha producido una pérdida de memoria significativaNo 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.
_CrtIsMemoryBlockComprueba 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ónNo 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.
_CrtIsValidHeapPointerComprueba que un puntero especificado está en el montón localNo 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.
_CrtIsValidPointerComprueba que un intervalo de memoria especificado es válido para lectura y escrituraNo 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.
_CrtMemCheckpointObtiene el estado actual del montón de depuración y lo almacena en una estructura de _CrtMemState proporcionada por la aplicaciónNo 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.
_CrtMemDifferenceCompara si dos estados de memoria tienen diferencias significativas y devuelve los resultadosNo 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.
_CrtMemDumpAllObjectsSinceVuelca 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 programaNo 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.
_CrtMemDumpStatisticsVuelca la información de encabezado de depuración para un estado de memoria especificado con un formato legible para el usuario<caps:sentence id="tgt64" sentenceid="e42975224af21ff11a761e6a6bdbd602" class="tgtSentence">System::Diagnostics::PerformanceCounter</caps:sentence>
_CrtReportBlockTypeDevuelve 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.
_CrtSetAllocHookInstala 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 CNo 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.
_CrtSetBreakAllocEstablece un punto de interrupción en un número de orden especificado de la asignación de objetosNo 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.
_CrtSetDbgFlagRecupera o modifica el estado de la marca _crtDbgFlag para controlar el comportamiento de asignación del administrador del montón de depuraciónNo 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.
_CrtSetDumpClientInstala 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_BLOCKNo 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.
_CrtSetReportFileIdentifica el archivo o flujo que se va a usar como destino de un tipo de informe concreto _CrtDbgReportNo 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.
_CrtSetReportHookInstala 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 CNo 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, _CrtSetReportHookW2Instala 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 CNo 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.
_CrtSetReportModeEspecifica los destinos generales de un tipo específico de informe generado por _CrtDbgReportNo 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 informeNo 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_dbgAsigna un número especificado de bloques de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescrituraNo 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_dbgCambia el tamaño de un bloque de memoria especificado del montón, expandiendo o contrayendo el bloqueNo 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_dbgLibera un bloque de memoria del montónNo 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_dbgCrea un nombre de ruta de acceso absoluta o completa para el nombre de ruta de acceso relativa especificado, utilizando _malloc_dbg para asignar memoria<caps:sentence id="tgt129" sentenceid="57f5d14fd2f1847b8e44146f72e48f72" class="tgtSentence">System::IO::File::Create</caps:sentence>
_getcwd_dbg, _wgetcwd_dbgObtiene el directorio de trabajo actual, usando _malloc_dbg para asignar memoriaNo 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_dbgAsigna un bloque de memoria del montón con espacio adicional para un encabezado de depuración y búferes de sobrescrituraNo 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_dbgCalcula el tamaño de un bloque de memoria del montónNo 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_dbgReasigna un bloque de memoria especificado en el montón, para lo que lo mueve o lo cambia de tamañoNo 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_dbgDuplica una cadena, usando _malloc_dbg para asignar memoria<caps:sentence id="tgt151" sentenceid="74a4ca1462af4bfed5950888b5c554e1" class="tgtSentence">System::String::Clone</caps:sentence>
_tempnam_dbg, _wtempnam_dbgGenera nombres que se pueden usar para crear archivos temporales, usando _malloc_dbg para asignar memoriaNo 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_fltpow
atan, atan2_fpresetprintf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l*
_cabsfrexp_scalb
ceil_hypotscanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l*
_chgsign, _chgsignf, _chgsignl_isnansetjmp
_clear87, _clearfp_j0sin
_control87, _controlfp, __control87_2_j1sinh
copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl_jnsqrt
cosldexp_status87, _statusfp
coshlogtan
Explog10tanh
fabs_logb_y0
_finitelongjmp_y1
floor_matherr_yn
fmodmodf

* 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 COperador delete de C++
Rutina assert de COperador new de C++

Rutinas de tiempo de ejecución por categoría
Comprobar errores en tiempo de ejecución

Mostrar: