Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Активизация диагностических макросов




Макросы TRACE библиотеки MFC очень полезны для наблюдения за работой программы. Для их работы необходимо, чтобы трассировка была активизирована, что и установлено по умолчанию. Если макросы в вашей программе не генерируют никаких результатов, сначала убедитесь, что Вы запускаете отладочную версию программы из-под отладчика, и затем запустите утилиту MFC Tracer из меню Tools. Если установить отметку в поле Enable Tracing, то TRACER вставляет строку

TraceEnabled=1

 

в раздел [Diagnostics] файла Afx.ini. (Нет, эта настройка хранится не в реестре.) С помощью TRACER можно также активизировать другие диагностические средства MFC, включая выдачу информации, связанной с сообщениями, OLE, базами данных и Интернетом.

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

TRACE("Вход в функцию CDRWView::OnDraw");

в функцию OnDraw(), запустите приложение в режиме отладки, попробуйте перемещать окно по экрану с частичным его сокрытием и понаблюдайте за выводом сообщений на вкладку Debug окна Output ИС.

Дополнительную информацию об использовании макросов отладки можно найти в конспекте лекций – раздел «Макросы».

Предкомпилированные заголовочные файлы

При создании проекта AppWizard генерирует параметры и файлы, необходимые для предварительной компиляции (предкомпиляции) заголовочных файлов. Для эффективного управления проектами Вам необходимо познакомиться с предкомпилированными заголовочными файлами (precompiled headers).

 Предкомпилированные заголовочные файлы представляют собой «моментальные снимки», которые делает компилятор на определенной строке исходного текста. В программах MFC такой снимок обычно делается непосредственно после оператора:

#include “StdAfx.h”

Примечание. В Visual С++ имеется два «режима» предкомпиляции файлов: автоматически и вручную. При автоматической (automatic) предкомпиляции, которая активизируется параметром командной строки компилятора /Yx, результаты работы компилятора сохраняются в файле «базы данных». Предкомпиляция вручную (manual) активизируется параметрами компилятора /Yc и /Yu, и созданные в таком режиме заголовочные файлы используются в проектах, сгенерированных AppWizard.

 

Файл StdAfx.h содержит директивы препроцессора include для подключения заголовочных файлов библиотеки MFC. Содержимое файла зависит от того, какой режим Вы выбрали при работе с AppWizard, однако в нем всегда имеются следующие операторы:

#include <AfxWin.h>

#include <AfxExt.h>

 

Если Вы используете составные документы, то StdAfx.h также содержит строку

#include <AfxExt.h>

 

А если Вы работаете с Автоматизацией или элементами управления ActiveX, то в нем содержится директива

#include <Afxdisp.h>

 

Если же Вы используете Internet Explorer 4 Common Controls, то StdAfx.h содержит

#include <Afxdtctl.h>

 

Вам могут потребоваться и другие заголовочные файлы. Например, заголовочный файл для классов наборов на основе шаблонов подключается оператором

#include <Afxtempl.h>

 

В файле StdAfx.cpp содержится единственный оператор:

#include "StdAfx.h"

 

Этот-то файл и используется для генерации файла предкомпилированных заголовочных  файлов. Заголовочные файлы библиотеки MFC, включаемые в файле StdAfx.h, никогда не изменяются, но их компиляция требует значительного времени. Параметр компилятора /Yc, используемый только для StdAfx.cpp, вызывает создание предкомпилированного заголовочного файла (РСН). Параметр /Yu, используемый для всех остальных исходных файлов, вызывает использование существующего РСН-файла. Параметр /Fp задает имя РСН-файла. В отсутствие этого параметра в подкаталоге результатов текущей конфигурации будет создан файл с именем проекта и расширением РСН. Весь процесс показан на рис. 10.

 

 

Рис. 10. Процесс генерации предкомпилированных заголовочных файлов

 

AppWizard автоматически генерирует параметры /Yc и /Yu, но при необходимости Вы можете внести свои изменения. Можно задавать параметры компилятора для отдельных исходных файлов. Если в диалоговом окне Project Settings выделить только файл StdAfx.h, то на вкладке C/C++ Вы увидите параметр /Yc, который замещает параметр /Yu, заданный для всего проекта.

Учтите, что PCH-файлы достаточно велики — их типичный размер 5 Мбайт. Если использовать их неосмотрительно, то жесткий диск может переполниться. Вы можете периодически очищать каталоги Debug своих проектов или же размещать все РСН-файлы в одном каталоге, используя параметр компилятора /Fp.

Два способа запуска программы

Visual С++ позволяет запускать программу непосредственно (с помощью сочетания клавиш Ctrl+F5) или в отладчике (с помощью клавиши F5). Непосредственный запуск выполняется значительно быстрее, так как от Visual C++ не требуется сначала загружать отладчик. Если Вам не нужны трассировочные сообщения и точки останова, запускайте программу с помощью Ctrl+F5 или кнопки с восклицательным знаком на панели инструментов Build.










Последнее изменение этой страницы: 2018-04-12; просмотров: 396.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...