|
|||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||
|
Параметри компіляції
Познайомившись
з різними способами компіляції
проектів і рішень, ми переходимо до
опису параметрів компіляції
окремих проектів. Клацніть
правою кнопкою миші на імені
проекту у вікні рішення і виберіть
команду Properties > Configuration Properties >
Build — на екрані з'являється вікно для
налаштування параметрів компіляції.
Наприклад, параметр Debugging дозволяє
задати аргументи командного рядка.
Мал. 2.24. Діалогове вікно
властивостей проекту В порівнянні з Vb6
параметрів зовсім небагато. Втім,
шкодувати про це не потрібно: багато що
з того, чим в Vb6
доводилося займатися вам, в CLR
робиться автоматично. Зокрема, в
параметрах компіляції можна
вказати, чи потрібно створювати
налагоджувальну інформацію (див.
наступний розділ), визначати
константи DEBUG і TRACE і видавати
попередження [ Дуже важко
представити ситуацію, в якій
відключення попереджень було б
виправдане. ]. Константи DEBUG і TRACE
виконують ті ж функції, що і в Vb6:
вони дозволяють використовувати в
програмі команди умовної
компіляції: #If
DEBUG Then Debug.WriteLine("In
debug mode") #End
If #If TRACE Then Trace.
Whtelirie( "Tracing") #End If Якщо константа
DEBUG не визначена, то перевірка в
першому рядку не проходить і команда
Debug.WriteLine не виконується. Те ж саме
відбувається і при перевірці
константи TRACE. У категорії
Optimizations списку Configuration Properties можна
відключити перевірку цілочисельного
переповнювання — втім, робити це
небажано. Ймовірно, Microsoft
додасть нові способи оптимізації
в остаточній версії VB .NET або в
доповненнях.
Налагоджувальна і остаточна версії
У верхній частині діалогового
вікна Project Properties > Configuration
Properties > Build знаходиться список
Configuration, що розкривається,
складається з трьох пунктів: Release (Остаточна
версія), Debug (Налагоджувальна версія) і All
Configurations (Всі конфігурації). За
допомогою цього списку можна задавати
різні набори параметрів для
різних типів компіляції. Наприклад,
коли робота над додатком
наближається до кінця, в остаточній
версії можна змінити деякі з
параметрів, встановлених раніше в
налагоджувальній версії. Для цього
слід вибрати в списку пункт Release
і провести додаткове
налаштування. Кнопка Configuration Manager
дозволяє задати параметри
компіляції відразу для декількох
проектів.
Що ж виходить
в результаті компіляції проекту?
На мал. 2.25 показана структура
каталогів, IDE,
що згенерували, для вирішення vb_ide_01.
Мал. 2.25. Дерево
каталогів після компіляції Як згадувалося вищим, початкові файли зберігаються
на верхньому рівні ієрархії, в
каталозі vb_ide_01. У каталог bin
поміщаються двійкові файли, отримані
при компіляції, — в нашому
прикладі створюються файли з розширеннями
.ехе і .pdb. Файл з розширенням .pdb
містить налагоджувальну інформацію і
створюється тільки в тому випадку,
якщо налагоджувальна інформація
зажадалася в діалоговому вікні
параметрів компіляції (Project > Configuration
Properties > Build).
У цьому
розділі приводиться короткий огляд
змін в засобах відладки VB .NET.
Ми повернемося до цієї важливої теми
пізніше, коли у нас
з'явиться змістовний код для відладки.
На жаль, починати доводиться
з сумної звістки. Якщо раніше
VB дозволяв перервати роботу
програми, відредагувати її і
продовжити виконання з урахуванням
внесених змін, то починаючи з
бета-версиі 2 ця можливість
не підтримується. Програму
можна редагувати в процесі
відладки, проте зміни набувають чинності
лише після повторної компіляції.
Втім, різні засоби
покрокового виконання і переривання
програм (такі як умовні точки
переривання) працюють так само, як і
раніше. Та все ж можна
з упевненістю сказати,
що існування загального
відладчика рівня VS .NET, по своїх
можливостях порівнянного з відладчиком
Vc++, є одним з найпомітніших
удосконалень VB .NET на тлі
попередніх версій VB. Значно
розширилися можливості роботи зі
всіма складовими додатку,
аж до відладки на рівні
завантажених модулів і програмних
потоків.
Відладчик VB .NET
володіє деякими новими
можливостями, відсутніми в
Vb6. Коротке зведення цих
можливостей приведене нижче.
Вікно пам'яті
призначене для проглядання
фактичного вмісту заданої
області пам'яті. Ні у одній з
колишніх версій VB не підтримувалася
ця можливість, надзвичайно
корисна в деяких ситуаціях, —
наприклад, якщо ви хочете простежити
за виконанням низькорівневої
коди і з'ясувати, що ж саме відбувається
при роботі вашої програми. Вікно
пам'яті викликається в IDE командою Debug >
Windows > Memory > Memory1 (або 2-4).
Зразковий вид вікна пам'яті показаний
на мал. 2.26. Якщо клацнути у вікні
пам'яті правою кнопкою миші,
з'явиться контекстне меню, в
якому вибирається представлення
вихідних даних.
З технічної
точки зору в будь-якому сеансі відладки
завжди задіяний деякий
процес (про процеси розказано в
розділі 10). У попередніх версіях VB
відладчик не дозволяв підключатися
до працюючих проце'сам — така
можливість була передбачена
тільки у відладчику Visual C++. У VB .NET
команда Debug > Processes виводить
діалогове вікно, показане на мал.
2!27.
Мал. 2.26. Вікно пам'яті
Мал. 2.27. Вибір процесу
для відладки Щоб почати
відладку, виділите процес в списку
і клацніть на кнопці Attach. Після
підключення до процесу кнопка Break
виводить інформацію про поточний
стан додатку. Якщо
налагоджувальна інформація відсутня,
виводиться лістинг на мові
асемблера. Після натиснення кнопки
Attach на екрані з'являється
діалогове вікно, в якому вам
пропонується вибрати, що ж ви
збираєтеся відладжувати — машинний
код, код CLR, сценарій і так далі В
більшості випадків відладжується
або машинний код, або код CLR. Длл
прикладу ми запустили екземпляр
додатку Notepad.exe і підключилися до
нього у відладчику VB .NET. Результат
показаний на мал. 2.28.
Мал. 2.28. Відладка
процесу Notepad.exe Лістинг виглядає страхітливо, оскільки ми
не маємо в своєму
розпорядженні налагоджувальної символічної
інформації для програми
Notepad.exe. За наявності цих даних
у вікні з'явився б фрагмент початкового
тексту функції, що
виконувалася у момент передачі
управління відладчику.
У відладчику VB .NET
передбачений ще один важливий
засіб — проглядання всіх
виконуваних потоків (threads)
додатку. Перемикання потоків у
відладчику грає дуже важливу роль
у відладці багатопотокових застосувань.
Ми повернемося до цієї теми в розділі 10
при знайомстві з багатопотоковим
програмуванням.
На перший погляд управління
виключеннями здається екзотикою,
не пов'язаною з практичною роботою.
Щоб оцінити цю
можливість по гідності, досить
опинитися за ситуації,
коли на стадії тестування виникають
численні виключення
(див. розділ 7)
і виникає необхідність в тонкому налаштуванні
дій, що виконуються
при виникненні виключень.
Це робиться в діалоговому
вікні, що викликається
командою Debug > Windows > Exceptions. У
цьому вікні ви указуєте, як повинен
діяти відладчик при
виявленні виключень
певного типу. Допустимо, ви
хочете, щоб при виникненні
помилок доступу управління
передавалося відладчику.
В
результаті відладчик автоматично
викликатиметься при виникненні
помилок доступу (0xc0000005), і ви зможете
точно визначити, в якому рядку
програми це відбулося.
Відладка керованої і некерованої код
Керованим (managed) в .NET
називається код, що виконується за
участю CLR. У керованому коді не
можна використовувати покажчики, а
виділенням/звільненням пам'яті
займається CLR. Некерований код не
підкоряється цим обмеженням. Він
може створюватися в C++ і С#, але в VB .NET
така можливість не
підтримується. Керований
код ускладнює роботу деяких
засобів відладки. Річ у тому,
що виконавче середовище
CLR прикладає значні зусилля
до оптимізації виконуваної коди,
що утрудняє отримання
правильних кадрів стека (тобто адрес всіх
викликаних функцій). Крім того, залежно
від специфіки програми оптимізація
може досягти такого ступеня,
що код, що відображається
у відладчику, погано асоціюється
з початковим текстом. Втім, в
порівнянні з перевагами нового
середовища відладки VB .NET ці проблеми
йдуть на другий план.
создать сайт украина, удмуртская республика |
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||