Процедуры отладки
Отладочная версия библиотеки времени выполнения C предоставляет множество служб диагностики, упрощающих отладку программы и позволяющих разработчикам:
Пошагово входить непосредственно в функции времени выполнения во время отладки
Разрешать утверждения, ошибки и исключения
Выполнять трассировку выделения памяти и предотвращать утечки памяти
Выводить отладочные сообщения пользователю
Для использования этих процедур должен быть определен флаг _DEBUG. Все эти процедуры не выполняют никаких действий в итоговом построении приложения. Дополнительные сведения о том, как использовать новые отладочные процедуры см. в разделе CRT Debugging Techniques.
Отладочные версии процедур библиотеки времени выполнения C.
Подпрограмма |
Применение |
Эквивалент в .NET Framework |
---|---|---|
Вычисляет выражение и создает отладочный отчет, когда результат FALSE |
||
Аналогично _ASSERT, но не содержит выражение в создаваемом отчете |
||
Проверяет целостность выделенных блоков памяти в отладочной куче |
||
Задает точку останова. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Создает отладочный отчет с сообщением для пользователя и отправляет отчет в три возможные назначения |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
Вызывает предоставленную приложением функции для всех типов _CLIENT_BLOCK в куче |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Сбрасывает все блоки памяти в отладочной куче при значительной утечке памяти |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Проверяет, что указанный блок памяти находится в локальной куче и что он имеет допустимый идентификатор типа блоков отладочной кучи |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Проверяет, что определенный указатель расположен в локальной куче |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Проверяет, что указанный диапазон памяти допустим для чтения и записи |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Получает текущее состояние отладочной кучи и сохраняет его в предоставленной приложением структуре _CrtMemState |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Сравнивает два состояния памяти на значащие отличия и возвращает результаты |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Сбрасывает сведения об объектах в куче после достижения контрольной точки или с самого начала выполнения программы |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Сбрасывает данные заголовка отладки для указанного состояния памяти в понятной пользователю форме |
||
Возвращает тип и подтип блока, связанный с заданным указателем на блок кучи отладки. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Устанавливает определяемую клиентом функцию выделения путём её прикрепления в отладочный процесс выделения памяти среды выполнения языка C. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Устанавливает точку останова на указанном порядковом номере выделения объекта |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Извлекает или изменяет состояние флага _crtDbgFlag для управления поведением выделения диспетчера отладочной кучи |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Задает определенную приложением функцию, которая вызывается при каждом вызове функции отладочного дампа, чтобы сбросить блоки памяти типа _CLIENT_BLOCK |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Указывает файл или поток, используемый в качестве назначения для определенного типа отчета _CrtDbgReport |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Задает определенную клиентом функцию путем присоединения ее к отладочному процессу уведомлений времени выполнения С. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Устанавливает или отменяет определяемую клиентом функцию отчетов путём её прикрепления в процесс создания отчетов среды выполнения языка C (только отладочная версия). |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Определяет общие назначения для определенного типа отчета, созданного _CrtDbgReport |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Отслеживает ход выполнения приложения созданием отладочного отчета путем вызова _CrtDbgReport со строкой формата и переменным количеством аргументов. Не предоставляет информацию о исходном файле и номере строки. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Аналогична макросам _RPTn, но предоставляет имя файла и номер строки в файле, где возник запрос отчета |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Выделяет указанное число блоков памяти в куче с дополнительным местом для отладочного заголовка и буферов перезаписи |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Изменяет размер указанного блока памяти в куче, увеличивая его или сжимая |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Освобождает блок памяти в куче |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Создает абсолютный или полный путь для указанного относительного имени пути, используя _malloc_dbg для выделения памяти. |
||
Получает текущую рабочую папку, используя _malloc_dbg выделения памяти. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Выделяет блок памяти в куче с дополнительным местом для отладочного заголовка и буферов перезаписи |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Вычисляет размер блока памяти в куче |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Перераспределяет указанный блок памяти в куче, перемещая его и/или изменяя размер |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Дублирует строки, используя _malloc_dbg для выделения памяти. |
||
Создает имена, которые можно использовать для создания временных файлов, используя _malloc_dbg для выделения памяти. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
Процедуры отладки можно использовать, чтобы пошагово выполнить исходный код большей части других процедур среды выполнения C в процессе отладки. Однако Майкрософт считает некоторые технологии собственническими и, следовательно, не предоставляет исходный код для этих процедур. Большинство этих процедур относится или к обработке исключений, или к группам операций с плавающей запятой, но несколько других также включены. Эти процедуры перечислены в следующей таблице.
Подпрограммы среды выполнения C, недоступные в форме исходного кода
* Хотя исходный код доступен для большей части из этой процедуры, он осуществляет внутренний вызов другой процедуры, для которой исходный код не предоставляется.
Некоторые функции времени выполнения C и операторы C++ ведут себя иначе при их вызове из отладочного построения приложения. (Обратите внимание, что отладочное построение приложения можно выполнить или определив флаг _DEBUG, или путем связывания с отладочной версией библиотеки времени выполнения C). Различия в поведении обычно состоят из дополнительных функций или сведений, предоставленных процедурой для поддержки процесса отладки. Эти процедуры перечислены в следующей таблице.
Процедуры, которые ведут себя по-другому в отладочном построении приложения
Процедура C abort |
C++ delete оператор |
Процедура C — assert |
C++ new оператор |