Поделиться через


Настройка проверок во время выполнения машинного кода

При компиляции с параметром /RTC (проверки времени выполнения) или использовании прагмы runtime_checks библиотека времени выполнения языка C предоставляет проверки во время выполнения машинного кода. В некоторых случаях необходимо настроить проверки времени выполнения:

  • для направления сообщений о проверке, осуществляемой во время выполнения, в файл или в другое место назначения, отличающиеся от используемого по умолчанию;

  • чтобы определить место назначения для сообщения о проверке, осуществляемой во время выполнения отладчиком стороннего поставщика;

  • для представления сообщений о проверке во время выполнения из программы, скомпилированной с рабочей версией библиотеки времени выполнения языка C. Для представления сообщения об ошибке во время выполнения окончательные версии библиотеки не используют _CrtDbgReportW. Вместо этого они отображают для каждой ошибки времени выполнения диалоговое окно Утверждение.

    Для настройки процесса проверки ошибок во время выполнения можно:

  • написать функцию, сообщающую об ошибке времени выполнения. Дополнительные сведения см. в статье "Практическое руководство. Создание функции отчетов об ошибках во время выполнения".

  • настроить место назначения для сообщения об ошибке;

  • запросить сведения об ошибках проверок времени выполнения;

Настройка места назначения для сообщения об ошибке

Если для уведомления об ошибках используется функция _CrtDbgReportW, то для определения места назначения сообщений об этих ошибках можно использовать _CrtSetReportMode.

Когда применяется пользовательская функция, сообщающая об ошибках, для связывания ошибки и типа сообщения следует использовать функцию _RTC_SetErrorType.

Запрос сведений о проверках времени выполнения

_RTC_NumErrors возвращает количество типов ошибок, обнаруженных в процессе проверки во время выполнения. Для получения краткого описания каждой ошибки можно использовать цикл от 0 до возвращенного _RTC_NumErrors значения, передавая номер итерации на каждом шаге в функцию _RTC_GetErrDesc. Дополнительные сведения см. в статьях _RTC_NumErrors и _RTC_GetErrDesc.