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


Диагностические службы

Предоставляет библиотеки Microsoft Foundation Class много диагностических служб, которые делают свои отладке программы.Эти диагностические службы включают макросы и глобальные функции, которые позволяют отслеживать выделения памяти программы, сбрасывают содержимое объектов во время выполнения и типом сообщения отладки во время выполнения.Макросы и глобальных диагностических функций для служб группируются в следующие категории:

  • Макросы диагностики без ограничений

  • Диагностические общие функции и переменные

  • Функции устранения неполадок объекта

Эти макросы и функции доступны для всех классов, унаследованных от CObject в версиях отладки и выпуска MFC.Однако все, кроме DEBUG_NEW и Проверить не выполняют никаких действий в версии выпуска.

В библиотеке отладка выберите все выделенные блоки памяти отысканы вилку с рядом «байт условия». Если эти байты нарушены странствующий записью памяти, контрольные программы могут сообщить о проблеме.При включении распространитель:

#define new DEBUG_NEW

в файле реализации, все вызовы новый будут храниться номер имени файла и линии, где выделение памяти осуществило.Функция CMemoryState::DumpAllObjectsSince будет отображать это дополнительную информацию, позволяющее определить утечку памяти.Refer также к классу CDumpContext дополнительные сведения в диагностическом выходе.

Кроме того, библиотека времени выполнения c также поддерживает набор диагностических функций, которые можно использовать для отладки приложения.Дополнительные сведения см. в разделе подпрограммы отладка в справочнике по библиотеке времени выполнения.

Общие диагностические макросов MFC

ASSERT

Печатает сообщение, а затем прерывает выполнение программы, если указанное выражение Ложь в отладочной версии библиотеки.

ASSERT_KINDOF

Тесты, что объект заданного класса или класса, производного от указанного класса.

ASSERT_VALID

Проверяет правильность объекта внутренней путем вызова его функцию-член AssertValid; обычно при переопределении в CObject.

DEBUG_NEW

Предоставляет номер имени файла и линии для всех выделений объекта в режиме отладка, чтобы помочь обнаружить утечки памяти.

DEBUG_ONLY

Аналогично ASSERT но не проверяет значение выражения. полезно для кода, который должен выполняться только в режиме отладки.

Следование

Предоставляет printf, такие как возможность в отладочной версии библиотеки.

Проверить

Аналогично ASSERT но вычисляет выражение в версии выпуска библиотеки, а также в отладочной версии.

Переменные и общие функции MFC диагностики

afxDump

Глобальная переменная, которая отправляет данные CDumpContext в окне вывода отладчика или в стержню отладки.

afxMemDF

Глобальная переменная, которая контролирует поведение выделения памяти отладки.

AfxCheckError

Глобальная переменная, которая используется для проверки переданных SCODE наличие ошибки и, если да, вызывает соответствующую ошибку.

AfxCheckMemory

Проверяет целостность всех выделенной памяти.

AfxDump

Если вызывается, когда в отладчике, дампах состояние объекта при отладке.

AfxDumpStack

Создает образ текущего стека.Эта функция всегда связана статически.

AfxEnableMemoryLeakDump

Включает дамп утечку памяти.

AfxEnableMemoryTracking

Включает отслеживание включено и памяти.

AfxIsMemoryBlock

Проверяет, что блок памяти был правильно установлен.

AfxIsValidAddress

Проверяет, что диапазон адресов памяти в пределах границ программы.

AfxIsValidString

Указывает, является ли допустимым указателем на строку.

AfxSetAllocHook

Включает вызов функции на каждом выделении памяти.

Функции устранения неполадок объекта MFC

AfxDoForAllClasses

Выполняет заданную функцию для всех CObject- производные классы, которые поддерживают проверку типа во время выполнения.

AfxDoForAllObjects

Выполняет заданную функцию всех унаследованных от CObject объекты, которые были выделены с новый.

См. также

Основные понятия

Макросы и глобальные MFC