Налагодження Shell extensions за допомогою Delphi
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
Налагодження Shell extensions за допомогою Delphi
Вступ
Нині інтегровані середовища програмування Borland Delphi і Borland C++ Builder є дуже зручними засобами розробки розширень оболонки Windows (далі Shell extensions).
На відміну від засобів розробки компанії Microsoft, де весь код Shell extension пишеться всередині шаблону, що генерується за допомогою "Shell Extension Wizard", у Delphi ви можете використовувати як подібні генератори шаблонів, так і більш простий візуальний підхід для розробки Shell extensions, наприклад пакет компонентів Shell+ (www.shellplus.com). У будь-якому випадку, важливим питанням є налагодження ваших Shell extensions.
Підготовка проекту Delphi для налагодження з Windows Shell
Ви повинні включити всю необхідну налагоджувальну інформацію у ваш проект. Для цього перед компіляцією відкрийте вікно "Project Options" (пункт меню Project Options. ), Перейдіть на закладку "Linker" і в групі "Exe and Dll Options" позначте прапорець "Include remote debug symbols". Він включає генерацію спеціальних даних для віддаленого налагодження, які також необхідні для налагодження COM-додатків. Після закінчення робіт над налагодженням вашого Shell extension не забудьте відключити цю можливість, оскільки вона значно збільшує розмір модуля і створює ще більший за розмірами файл з розширенням *.rsm, в якому зберігаються символи віддаленого налагодження. Також для зручності налагодження увімкніть прапорець "Use debug DCUs" на закладці "Compiler" діалогу "Project Options". Це дозволить вам стежити за внутрішньою роботою модулів, які не були включені до списку модулів вашого проекту.
Так само ви не повинні забувати продоступності вихідних текстів вашого Shell extension для Delphi. Вони повинні знаходитися в поточній для Delphi директорії або до них має бути прописаний шлях у діалозі Project Options Directories/Conditionals, пункт – "Debug Source Path".
Після виконання всіх дій щодо настроювання властивостей проекту ви повинні повністю перекомпілювати ваш проект (через пункт меню Project Build.).
Особливості налагодження DLL під Windows XP
Якщо ви працюєте під операційною системою Windows XP, то при налагодженні DLL-бібліотек у вас виникнуть труднощі. Вони полягають у тому, що відладник Delphi не завантажує символи налагоджувальної інформації з бібліотеки.
Ця помилка вже виправлена в Delphi 7, але якщо ви працюєте з раніше версіями, вам знадобиться ця порада: виконайте всі приготування до налагодження, як було описано вище, запустіть налагодження. Після того, як головна програма запуститься, перейдіть в Delphi і натисніть комбінацію клавіш Ctrl+Alt+M. У вікні списку завантажених модулів знайдіть ваш модуль, клацніть на ньому правою кнопкою миші і виберіть пункт Reload Symbol Table. У вікні, яке з'явиться, введіть повний шлях до DLL і натисніть ОК. Таблиця налагоджувальних символів повинна перезавантажитись і ви отримаєте можливість встановлювати точки переривання та стежити за поведінкою вашого Shell extension.
Підготовка Windows Explorer до роботи під налагоджувачем
Носією функціональності Shell є програма Windows Explorer. Ви можете побачити на екрані комп'ютера такі об'єкти, як Desktop, Taskbar, вікна папок файлової системи. Все це реалізовано програмою Windows Explorer, і Ви можете побачити цю програму в Task Manager.
Зіставлений йому процес називається Explorer.exe. Там же ви можете побачити, що у васіноді запущено кілька екземплярів цього процесу. Не дивуйтеся - вся справа в налаштуваннях Windows, що буде показано далі.
Windows Shell автоматично вивантажує динамічну бібліотеку, коли внутрішній лічильник її використання дорівнює нулю, але це відбувається лише після певного періоду часу. Це зроблено для прискорення роботи оболонки, але не завжди зручно при написанні та налагодженні Shell extensions в межах однієї операційної системи - при компіляції вже зареєстрованого Shell extension файл може бути заблокованим для запису. Для операційних систем версій нижче Windows 2000 ви можете зменшити цей період за допомогою додавання нижченаведеної (following) інформації до реєстру:
HKLM Software Microsoft Windows CurrentVersion Explorer AlwaysUnloadDll
Не забувайте відключати цю можливість після завершення налагоджувальних робіт над вашим Shell extension, оскільки вона погано позначається на продуктивності Windows.
У будь-якій операційній системі можна застосувати наступний метод для запуску Windows Shell під налагодженням:
Виконайте всі налаштування, необхідні для налагодження Shell extensions і запустіть налагодження. Shell має стартувати як завжди, але зараз вона працюватиме під керуванням відладчика.
При налагодженні Shell extensions під керуванням Windows NT/2000/XP можна налаштувати запуск кількох екземплярів Windows Explorer (окремий екземпляр під Task Bar, під кожне вікно з вмістом папок або дисків). В результаті ви зможете налагоджувати ваші Shell extensions, не вивантажуючи при цьому Task Bar та Desktop, що набагато зручніше. Щоб включити цю можливість, ви повинні додати нижченаведену інформацію до реєстру:
HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ DesktopProcess(REG_DWORD) = 1
Щоб це значення почало діяти, ви повинні виконати Log off і потім Log on. Не забувайте відключати цю можливість після завершення налагоджувальних робіт над вашим Shell extension, оскільки вона погано позначається на продуктивності Windows.
Налагодження Shell extensions
Після всіх виконаних приготувань ви можете натиснути кнопку Run (F9) і запустити Shell extension на налагодження. Встановлюйте точки переривання у потрібних місцях, використовуйте кнопки Program Pause та Program Reset за потреби. Налагодження Shell extensions більше нічим не відрізняється від налагодження звичайних програм Delphi. Не дивуйтеся, якщо після обриву налагодження проекту через "Program Reset", Windows Explorer завантажуватиметься сам. Це стандартна реакція Windows на хибне завершення процесу Explorer. Для нормального завершення процесу налагодження можна скористатися способом, описаним раніше (через Пуск Завершення роботи).
Windows Explorer - програма багатопоточна. Для кожного Shell extension воно створює окремий потік, в якому і працює з ним надалі. Тому не дивуйтеся, якщо в процесі покрокової налагодження вас раптово перекине в іншу ділянку коду, де ви нещодавно налагоджувалися, а потім знову поверне на старе місце. За вашими подорожами крізь потоки можна стежити через вікно Thread status, яке можна відкрити через меню View Debug Windows Threads.
Як ви помітили, налагодження Shell extension не являє собою нічого складного. Бажаю вам удачі у розробці корисних та успішних розширень оболонки.