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


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

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

  • Общие диагностики макросы

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

  • Функции диагностики объекта

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

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

#define new DEBUG_NEW

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

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

Макросы MFC общие диагностики

ASSERT

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

ASSERT_KINDOF

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

ASSERT_VALID

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

DEBUG_NEW

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

DEBUG_ONLY

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

Следование

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

VERIFY

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

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

afxDump

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

afxMemDF

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

AfxCheckError

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

AfxCheckMemory

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

AfxDump

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

AfxDumpStack

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

AfxEnableMemoryLeakDump

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

AfxEnableMemoryTracking

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

AfxIsMemoryBlock

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

AfxIsValidAddress

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

AfxIsValidString

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

AfxSetAllocHook

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

Функции диагностики объекта MFC

AfxDoForAllClasses

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

AfxDoForAllObjects

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

См. также

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

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