Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Methods_AP_LABS_I

.pdf
Скачиваний:
25
Добавлен:
17.03.2016
Размер:
1.53 Mб
Скачать

ATL Project – COM3 сервер, організований у вигляді динамічної бібліотеки модуля, що виконується, або сервісу, що використовує бібліотеку ATL.

1.1.5 Редагування властивостей проекту Вікно редагування властивостей проекту (рисунок 1.3) викликається за

допомогою вибору пункту контекстного меню обраного проекту у вікні

Solution Explorer:

Рисунок 1.3 – Установлення залежностей між проектами

За допомогою меню Project Dependencies (рисунок 1.4) можливо встановити залежності одного проекту від інших. Дані залежності будуть враховуватися при визначенні порядку складання проектів у рішенні.

3 COM - (англ. Component Object Model, модель компонентних об'єктів Microsoft) – стандартний механізм, що включає інтерфейси, за допомогою яких одні об'єкти надають свої сервіси іншим. Є основою багатьох об'єктних технологій на платформі Windows, у

тому числі, OLE і ActiveX.

Рисунок 1.4 – Редагування вихідного коду

Вбудований редактор вихідного коду Visual Studio надає можливості по автоматичному завершенню операторів, що вводяться, назв змінних і функцій. Існують також комерційні плагіни, що розширюють можливості стандартного редактора вихідного коду. Один із кращих Visual Assist

компанії Whole Tomato.

1.1.6 Компіляція й компонування проекту Зібрати проекти в складі одного рішення можна за допомогою клавіші

F7. Відкомпілювати відкритий файл вихідного коду можна за допомогою комбінації клавіш Ctrl+F7.

1.1.7 Конфігурації проекту Конфігурація проекту – іменований набір налаштувань проекту.

Споконвічно проект містить 2 конфігурації:

Debug - відлагоджувальна конфігурація. У процесі компіляції відключається оптимізація коду, у модуль збирається додаткова інформація для налагодження коду, використовуються відлагоджувальні версії бібліотек

часу4 виконання. Зібраний в відлагоджувальну конфігурацію модуль, як правило, має більший розмір і меншу швидкодію, однак найбільш повно забезпечує можливості налагодження на рівні вихідного коду.

Release – фінальна конфігурація. При компіляції в release-конфігурації включена оптимізація коду по швидкодії або розміру, і, як правило,

виключається відлагоджувальна інформація з модуля, що збирається.

Зібраний у фінальній конфігурації модуль найчастіше має менший розмір і більшу швидкодію, однак можливість налагодження на рівні вихідного коду значно утруднена.

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

навпаки, слід використовувати release-конфігурацію. Крім низької швидкодії і часто великого розміру, застосування, зібране у відлагоджувальній конфігурації, може вимагати для своєї роботи наявності відлагоджувальної версії бібліотеки часу виконання, які не поставляються разом з операційною системою.

Крім стандартних конфігурацій програміст може задати додаткові конфігурації для проектів, наприклад, оптимізовані для зменшення розміру,

або зменшення залежностей від зовнішніх runtime-бібліотек.

Користувач може вибрати одну з доступних конфігурацій за допомогою випадаючого списку на панелі інструментів (рисунок 1.5). Під час наступного складання проекти будуть скомпільовані й скомпоновані в зазначеній конфігурації.

Рисунок 1.5 – Випадаючий список

4 Бібліотека часу виконання (англ. run time library або RTL) – файл, що містить підпрограми, які компонуються до програми під час її виконання (динамічно компонована бібліотека dynamic linking library, DLL) або на етапі компонування (статично компонована бібліотека static linking library). RTL забезпечує середовище виконання програми, будучи прошарком між застосуванням і операційною системою.

Для пакетного складання проектів відразу в декількох конфігураціях можна скористатися командою меню Build→batch Build.

1.1.8 Платформа проекту

Операційні системи сімейства Windows випускаються в редакціях для

32-бітних (x86) і 64-бітних (x64) процесорів. Під управлінням 64-бітних версій операційних систем Windows можуть виконуватися 64-бітні застосування, яким доступний більший об’єм оперативної пам'яті, що здатні виконувати операції над 64-бітними цілими числами швидше, ніж 32-бітні застосування.

Середовище Visual Studio дозволяє створювати як 32-бітні, так і 64-бітні застосування (при установці відповідних версій компілятора). При складанні застосування можна вибрати платформу (32-бітну або 64-бітну, якщо були встановлені відповідні компоненти), для якої буде здійснюватися складання зазначеної конфігурації проекту (рисунок 1.6).

Рисунок 1.6 – Платформа проекту

1.1.9 Запуск застосування

Комбінація клавіш CTRL+F5 дозволяє запустити зібраний проект (в

обраній конфігурації для зазначеної платформи) прямо із середовища розробки. У випадку, коли рішення містить кілька проектів, один із проектів може бути позначений як такий, що запускається за допомогою контекстного меню вікна Solutions Explorer (рисунок 1.7).

Рисунок 1.7 – Запуск застосування У вікні настроювання проекту користувач може вказати аргументи

командного рядка, передані застосуванню при його запуску, директорію за замовчуванням, а також додаткові бібліотеки, що динамічно підключаються,

які завантажуються в адресний простір застосування при його запуску.

1.1.10 Налагодження застосування

Налагодження застосування (англ. debugging5) - процес пошуку та виправлення помилок у розроблювальній програмі.

Клавіша F5 здійснює запуск активного проекту під управлінням вбудованого відлагоджувальника середовища Visual Studio. У режимі налагодження програмістові доступні наступні можливості налагодження застосувань:

зупинка виконання програми в зазначених точках останову6;

трасування програми;

5Коли на початку 1945 р. ЕОМ Mark був зупинений для ремонту, Грейс Хопер (Grace Hopper) помітила в одному з реле метелика, влучення якого, можливо й викликало збій. Після цього операція відновлення працездатності стала іменуватися нею debugging. Це цілком імовірно, тому що виділюване комп'ютером тепло приваблює комах.

6Точка останову (англ. breakpoint) - місце в програмі, задане за адресою команди або якоюсь умовою, де її нормальне виконання переривається для цілей налагодження й може бути відновлене за допомогою спеціальної команди відлагоджувальника.

• перегляд і зміна значень змінних і вмісту комірок пам'яті.

1.1.10.1 Точки останову

Клавіша F9 дозволяє встановити або зняти раніше встановлену точку останову з рядка, на який установлений курсор у редакторі вихідного коду.

Рядок програми, на якому встановлена точка останову, позначається кружечком (рисунок 1.8):

Рисунок 1.8 – Точки останову Програміст може встановити довільну кількість точок останову в

програмі.

Увага: в момент запуску застосування в режимі налагодження положення точок останову може змінитися, наприклад, якщо точка останову була встановлена на рядках, що не містять операторів, або усередині коментарів.

Виконання програми припиняється, як тільки виконання доходить рядка,

позначеного точкою останову.

1.1.10.2 Перегляд і зміна значень змінних у процесі налагодження

У процесі налагодження припиненого застосування програмістові доступні вікна перегляду локальних змінних (Local variables) і вікна перегляду виразів (Watch).

Вікна відлагоджувальника показуються за допомогою команд меню

Debug/Windows (рисунок 1.9).

Рисунок 1.9 – Debug/Windows

Для перегляду змінних доступні наступні вікна:

Autos - відображення змінних, що використовуються поточним і попереднім операторами.

Locals - відображення локальних змінних поточної функції або методу

класу

У вікні виразів Watch програміст може переглядати значення змінних і виразів, а також змінювати значення змінних (але не значення виразів).

1.1.10.3 Перегляд і зміна вмісту комірок пам'яті Крім зміни значення окремих змінних програмістові також доступний

вміст адресного простору відлагоджувального процесу. За допомогою вікна програміст може переглядати та змінювати вміст комірок пам'яті. Значення комірок пам'яті можуть відображатися у вигляді 8, 16, і 32-бітних значень (у

шістнадцятеричній системі числення) (рисунок 1.10).

Рисунок 1.10 – Значення комірок

Вікно Memory викликається за допомогою команди меню Debug→ Memory.

1.1.11 Покрокове виконання (трасування) програми Трасування дозволяє програмістові простежити виконання програми «по

кроках», на кожному кроці відслідковуючи значення змінних і/або вміст комірок пам'яті, а також порядок виконання операторів.

Наступні комбінації клавіш використовуються для покрокового трасування програми:

F10 - виконати поточний оператор. Якщо поточним оператором є оператор виклику функції або методу класу, то він виконується як єдине ціле.

F11 - виконати поточний оператор. Якщо поточним оператором є оператор виклику функції, то відбувається вхід усередину тіла функції.

Shift+F11 - продовжити виконання програми до виходу з поточної функції або методу класу.

Ctrl+F10 - продовжити виконання програми до досягнення позиції курсору.

Alt+Num* - установити курсор у позицію виконання наступного оператора

F5 - відновити виконання програми.

1.1.12Внесення змін у код у процесі налагодження програми Середовище Visual Studio надає механізм Edit and Continue, що дозволяє

внести в програму необхідні зміни в процесі налагодження й у ряді випадків продовжити виконання зміненої програми без її перезапуску. Після внесення змін достатньо нажати комбінацію клавіш Alt+А10, або виконати одну з команд трасування програми.

1.1.13 Припинення виконання застосування Припинити роботу застосування й вийти з режиму налагодження можна

здійснити за допомогою комбінації клавіш Shift + F5.

1.2 Розробка застосування в Microsoft Visual Studio

1.2.1 Прекомпільовані заголовки (precomiled headers)

Для зв'язку вихідних файлів один з одним під час компіляції використовується директива препроцесора #include, що виконує підключення заголовочного файлу із заданим іменем замість директиви #include.

заголовочні файли, що підключаються, у свою чергу, можуть включати інші заголовочні файли і т.д.

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

7 Одиниця компіляції - файл, що бере участь у процесі компіляції. Для застосувань на мовах C і C++ - це файли з одним з розширень: .с, .cpp, .cxx. Заголовочні файли (.h, .hxx, .hpp) одиницями компіляції не є, однак можуть підключатися в одиницях компіляції й інших заголовочних файлах.

складає 10 тисяч рядків, а кількість одиниць компіляції, що містяться в проекті, дорівнює 200 загальним обсягам 50 тисяч рядків. Для повної перекомпіляції проекту буде потрібно обробити 10000×200+50000=2 050 000

рядків вихідного коду, причому 2 мільйони рядків з них складуть заголовочні файли. Нехай обробка 1 мільйона рядків коду відбувається за 1 хвилину. У

цьому випадку повне складання проекту займе близько 2 хвилин. Для прискорення процесу обробки заголовочних файлів у ряді компіляторів (і в

Visual Studio) використовуються файли предкомпільованих заголовків.

Ідея проста. В одному із заголовочних файлів проекту, за замовчуванням у файлі stdafx., за допомогою директиви #include підключаються часто використовувані й рідко змінювані заголовочні файли. На основі даного заголовочного файлу компілятор створює спеціальний попередньо скомпільований заголовочний файл (в Visual Studio це файл із розширенням

.pch). У попередньо скомпільованому заголовочному файлі розташовується вміст заголовочного файлу в попередньо обробленому вигляді. В інших одиницях компіляції найпершою інструкцією є директива include, що виконує підключення заголовного файлу stdafx.h.

Слід пам'ятати про обов'язкове підключення заголовного файлу stdafx.h

на початку кожної одиниці компіляції (не слід включати їх в заголовочних файлах), якщо в проекті використовуються прекомпільовані заголовки. А

якщо ні, то ви одержите повідомлення про помилку:

fatal error C1010: unexpected end of file while

looking for precompiled header directive

Крім того, будь-який код, розташований до підключення прекомпільованого заголовка, буде проігнорований компілятором. Тому директива #include його підключення повинна бути першою інструкцією в одиниці компіляції.

Використання заголовочних файлів у проекті задається у вікні властивостей проекту (розділ Configuration Properties→С/C++→precompiled eaders) (рисунок 1.11).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]