Подпрограммы отладки
Отладочная версия библиотеки времени выполнения C предоставляет множество служб диагностики, упрощающих отладку программ и позволяющих разработчикам:
пошагово входить непосредственно в функции времени выполнения во время отладки;
разрешать утверждения, ошибки и исключения;
трассировать выделение памяти в куче и предотвращать утечки памяти;
выводить отладочные сообщения пользователю.
Отладочные версии подпрограмм библиотеки времени выполнения C
Чтобы использовать эти подпрограммы, _DEBUG
необходимо определить флаг. В окончательной сборке приложения все эти подпрограммы не выполняют никаких действий. Дополнительные сведения об использовании новых подпрограмм отладки см . в статьях о методах отладки CRT.
Маршрут | Использование |
---|---|
_ASSERT |
Вычисление выражения и создание отчета отладки при получении результата FALSE |
_ASSERTE |
Аналогична _ASSERT , но включает в создаваемый отчет выражение, где произошел сбой |
_CrtCheckMemory |
Проверяет целостность выделенных блоков памяти в отладочной куче |
_CrtDbgBreak |
Устанавливает точку останова. |
_CrtDbgReport , _CrtDbgReportW |
Создает отладочный отчет с сообщением для пользователя и отправляет отчет в три возможных назначения |
_CrtDoForAllClientObjects |
Вызывает предоставленную приложением функцию для всех типов _CLIENT_BLOCK в куче |
_CrtDumpMemoryLeaks |
Сбрасывает все блоки памяти в отладочной куче при значительной утечке памяти |
_CrtIsMemoryBlock |
Проверяет, что указанный блок памяти находится в локальной куче, а также что он имеет допустимый идентификатор типа блока отладочной кучи |
_CrtIsValidHeapPointer |
Проверяет, что указанный указатель находится в локальной куче |
_CrtIsValidPointer |
Проверяет, что указанный диапазон памяти допустим для чтения и записи |
_CrtMemCheckpoint |
Получает текущее состояние отладочной кучи и сохраняет его в предоставленной приложением структуре _CrtMemState |
_CrtMemDifference |
Сравнивает два состояния памяти на предмет значащих отличий и возвращает результаты |
_CrtMemDumpAllObjectsSince |
Сбрасывает сведения об объектах в куче с указанной контрольной точки или с начала выполнения программы |
_CrtMemDumpStatistics |
Сбрасывает данные заголовка отладки для указанного состояния памяти в понятной пользователю форме |
_CrtReportBlockType |
Возвращает тип и подтип блока, связанные с указателем блока заданной отладочной кучи. |
_CrtSetAllocHook |
Устанавливает определяемую клиентом функцию выделения путем присоединения ее к отладочному процессу выделения памяти времени выполнения C |
_CrtSetBreakAlloc |
Устанавливает точку останова на указанном порядковом номере выделения объекта |
_CrtSetDbgFlag |
Извлекает или изменяет состояние флага _crtDbgFlag для управления поведением выделения диспетчера отладочной кучи |
_CrtSetDumpClient |
Устанавливает определяемую приложением функцию, которая вызывается при каждом вызове функции отладочного дампа для сброса блоков памяти типа _CLIENT_BLOCK |
_CrtSetReportFile |
Указывает файл или поток, используемый в качестве назначения для определенного типа отчета _CrtDbgReport |
_CrtSetReportHook |
Устанавливает определяемую клиентом функцию отчетов путем присоединения ее к отладочному процессу отчетов времени выполнения С |
_CrtSetReportHook2 , _CrtSetReportHookW2 |
Устанавливает или удаляет определяемую клиентом функцию отчетов путем ее присоединения к отладочному процессу отчетов времени выполнения языка C. |
_CrtSetReportMode |
Задает общие назначения для определенного типа отчета, создаваемого _CrtDbgReport |
_RPT[0,1,2,3,4] |
Отслеживает ход выполнения приложения путем создания отладочного отчета, вызывая _CrtDbgReport со строкой формата и переменным количеством аргументов. Не предоставляет сведений об исходном файле и номере строки. |
_RPTF[0,1,2,3,4] |
Аналогична макросам _RPTn , но предоставляет имя файла и номер строки в файле, где возник запрос отчета |
_calloc_dbg |
Выделение указанного количества блоков памяти в куче с дополнительным пространством для заголовка отладки и перезаписи буферов |
_expand_dbg |
Изменяет размер указанного блока памяти в куче, увеличивая его или сжимая |
_free_dbg |
Освобождает блок памяти в куче |
_fullpath_dbg , _wfullpath_dbg |
Создайте абсолютное или полное имя пути для указанного относительного имени пути, используя _malloc_dbg для выделения памяти. |
_getcwd_dbg , _wgetcwd_dbg |
Получите текущий рабочий каталог, используя _malloc_dbg для выделения памяти. |
_malloc_dbg |
Выделение блока памяти в куче с дополнительным пространством для заголовка отладки и перезаписи буферов |
_msize_dbg |
Вычисляет размер блока памяти в куче |
_realloc_dbg |
Перераспределяет указанный блок памяти в куче, перемещая его и (или) изменяя его размер |
_strdup_dbg , _wcsdup_dbg |
Дублирует строку, используемую _malloc_dbg для выделения памяти. |
_tempnam_dbg , _wtempnam_dbg |
Создавать имена, которые можно использовать для создания временных файлов, используя _malloc_dbg для выделения памяти. |
Подпрограммы среды выполнения C, недоступные в форме исходного кода
Отладчик можно использовать для пошагового выполнения исходного кода большинства подпрограмм среды выполнения C в процессе отладки. Однако корпорация Майкрософт считает, что некоторые технологии являются собственными и поэтому не предоставляют исходный код для подмножества этих подпрограмм. Большинство этих подпрограмм относится либо к обработке исключений, либо к группам операций с плавающей запятой, однако есть также несколько подпрограмм других категорий. Эти подпрограммы перечислены в следующей таблице.
Хотя исходный код доступен для большинства printf
и scanf
подпрограмм, они вызывают внутреннюю процедуру, для которой исходный код не предоставляется.
Подпрограммы, которые ведут себя иначе в отладочной сборке приложения
Некоторые функции времени выполнения C и операторы C++ ведут себя иначе при их вызове из отладочной сборки приложения. (Можно создать отладочную сборку приложения, определив _DEBUG
флаг или связав отладочную версию библиотеки времени выполнения C.) Различия в поведении обычно состоят из дополнительных функций или сведений, предоставляемых подпрограммой для поддержки процесса отладки. Эти подпрограммы перечислены в следующей таблице.
Подпрограмма C abort
Подпрограмма C assert
Оператор C++ delete
Оператор C++ new
См. также
Универсальные подпрограммы среды выполнения C по категориям
Проверка ошибок во время выполнения