Главная страница
Навигация по странице:

  • Release

  • ASSERT

  • Алгоритмизации


    Скачать 1.15 Mb.
    НазваниеАлгоритмизации
    Дата27.09.2022
    Размер1.15 Mb.
    Формат файлаdocx
    Имя файла12_100229_1_124427 (1).docx
    ТипДокументы
    #700459
    страница53 из 67
    1   ...   49   50   51   52   53   54   55   56   ...   67

    ОкнаAutoиWatch1


    Помимо экранной подсказки, переменная sum со своим значением отображается в окне Auto, расположенном в левом нижнем углу экрана (см. рис. П 5.1). В этом окне приведены значения последних переменных, с которыми работал Visual C++.

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

    В заключение напомним, что после отладки проекта необходимо построить его финальную версию, т.к. в ЕХЕ-файле есть дополнительный отладочный код, включенный через директивы компилятора _DEBUG. В папке Debug его размер приблизительно равен 1 Мб. Для того чтобы получить нормальную версию, необходимо переключиться на проект типа Release. Это делается в меню Build: далее Set Active Configuration, дальше надо выбрать Release и запустить сборку: Rebuild all. Весь отладочный код пропускается, в каталоге проекта появится папка Release. Теперь размер ЕХЕ-файла около 100 Кб.

    Приложение5
    Размер проекта еще зависит от того, как используется библиотека MFC. Как вы уже знаете – есть два варианта: StaticLibrary и Dinamic Library. Если использовать первый вариант, то код MFCбудет встроен в проект и размер возрастет. Во втором варианте программа будет пользоваться файлами *.DLL и размер будет меньше.

    Программныесредстваотладки


    При создании приложения на базе MFC в него можно включить определенные инструкции, используемые только во время его отладки. Их использование замедляет выполнение программы. Цель использования: получение дополнительных сообщений, которые облегчают процесс отладки. При создании окончательной версии приложения эти операторы следует удалить.

    Режим компиляции приложения должен быть Debug (отладочный), т.к. инструкции – специальные функции и макросы библиотеки MFC, работающие только в отладочном режиме. Кроме того, в отладочной версии приложенияVisualC++ с помощью директивы #define определяется константа _DEBUG, используемая в директивах условной компиляции и в макросах отладки.

    МакросASSERT(BOOLexpression). Данный макрос используется для проверки некоторых логических условий, которые должны выполняться в данной точке программы. Его работа заключается в следующем: если логическое выражение BOOLexpression, передаваемое ему в качестве аргумента, имеет значение FALSE, выполнение приложения прерывается и на экран выводится окно сообщения, показанное на рис. П 5.2. В данном окне указывается имя файла и номер строки, в которой произошла ошибка.




    Рис. П 5.2
    Нажатие кнопки «Повтор» позволяет перейти в текст программы для ее дальнейшей отладки, причем текущая точка останова устанавливается на


    Приложение5

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

    МакросTRACE(exp)служит для вывода диагностических сообщений. Синтаксис макросаTRACEаналогичен синтаксису функции printf. Здесь expпеременное число параметрических аргументов, т.е. макрос позволяет выводить сообщения с любым числом параметрических аргументов. Под параметрическим аргументом понимается идентификатор переменной, значение которой должно быть преобразовано в текстовую строку в соответствии с указанным форматом. Помимо макроса TRACE существуют TRACE1, TRACE2 и TRACE3. Число в имени макроса указывает на количество параметрических аргументов в нем. Макросы TRACE0, TRACE1, TRACE2 и TRACE3 созданы исключительно с целью экономии места в сегменте данных. Все макросы TRACE посылают свои сообщения в поток afxDump.

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

    Пример вывода сообщения о возникновении ошибки в файле: TRACE2("\n Ошибка номер: %d в файле %s \n", nError, szFileName);

    Следующий пример иллюстрирует работу данного макроса:

    . . .

    int a = 5;

    char s[] = ”Minsk”;

    TRACE(“\n a = %d, s = %s \n”, a, s);

    . . .

    В поле среды OutPutполучим

    a=5,s=Minsk

    В окончательной версии приложения Release, в которой константа

    _DEBUG не определена, макросы ASSERT и TRACE не выполняют никаких действий. Это позволяет оставлять их в тексте программы. В случае же необходимости контроля некоторых логических условий и в рабочей области вместо ASSERT необходимо использовать макрос VERIFY(BOOLexpression), который работает точно так же, но в рабочей версии проекта.

    Приложение6

    1   ...   49   50   51   52   53   54   55   56   ...   67


    написать администратору сайта