Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Діагностика об’єкту




Модель об’єкту часу виконання

Основні архітектури.

SDI – одно-документна програма.

MDI – багато-документна програма.

Діалог – програма на основі діалогу.

Форма – програма на основі форми.

 

...

 

Для забезпечення обслуговування об’єктів в період їх виконання та підтримки властивостей, що надаються класами CObject та CRuntimeClass використовуються наступні макровизначення:

DECLARE_DYNAMIC(className) - дозволяє доступ до інформації часу виконання про об’єкт класу (повинен використовуватися при оголошенні класу); className - дійсне ім’я С++ класу без лапок.

IMPLEMENT_DYNAMIC(className, baseClassName) – генерує код, необхідний для динамічного отримання інформації часу виконання про об’єкт (повинен використовуватися в реалізації класу).

DECLARE_DYNCREATE(className) – дозволяє динамічне створення об’єкту та отримання інформації часу виконання про об’єкт класу (повинен використовуватися при оголошенні класу).

IMPLEMENT_DYNCREATE(className, baseClassName) – дозволяє динамічне створення об’єкту та доступ до інформації часу виконання про об’єкт класу (повинен використовуватися в реалізації класу).

DECLARE_DYNAMIC(className) – для класів описаних за допомогою приведених вище макросів повертає вказівник на структуру CRuntimeClass, яка відповідає класу className.

 

Діагностичний сервіс, що надається бібліотекою MFC значно спрощує відлагодження програм. Він включає макровизначення та глобальні функції, які дозволяють відслідковувати розподіл пам’яті, вміст дампу об’єкту та друк відлагоджувальної інформації часу виконання.

До основних макросів діагностики відносяться:

ASSERT(booleanExpression) – перериває виконання програми, якщо вираз booleanExpression, що обчислюється рівний FALSE, та друкує повідомлення про помилку.

ASSERT_KINDOF(className, pObject) – перевіряє, чи є pObject об’єктом класу className, де className - ім’я класу похідного від CObject;

ASSERT_VALID(pObject) – використовується для перевірки внутрішнього стану класу pObject на доступність, якщо хоч одна перевірка приводить до помилки, то макрос виводить повідомлення аналогічно ASSERT.

TRACE(exp) – дозволяє вивести на екран фор матований рядок, що визначається виразом exp подібно до функції printf().

TRACE0, …, TRACE3 – спрощені версії макросу TRACE для виводу форматованих рядків з кількістю аргументів від 0 до3.

Згадані макроси працюють тільки у версії бібліотеки призначеної для відлагодження.

VERIFY(booleanExpression) – працює аналогічно до ASSERT, але в робочій версії бібліотеки

Глобальні змінні.

CdumpContext afxDump – визначена змінна, що дозволяє послати інформацію у вікно відлагоджувача.

BOOL afxTraceEnable – використовується для дозволу або заборони роботи макросів TRACE.

 


 




Поделиться с друзьями:


Дата добавления: 2013-12-14; Просмотров: 310; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.