- Отладка DLL
- Общие принципы отладки DLL
- Отладка расширений оболочки Windows
- Закрытие оболочки Windows
- Повторный запуск оболочки
- Отладка расширений в Windows NT/2000
- Выгрузка DLL
- Отладка Add-in’ов к Visual C++
- Отладка ISAPI-расширений
- Подготовка к отладке
- Отладка расширения в режиме in-process
- Запуск IIS в режиме обыкновенного приложения
- Отладка расширения в режиме out-of-process
- Как установить DLL файлы на Windows?
- Как установить DLL файл
- Помещение и регистрация файлов библиотеки
- Второй способ регистрации
- Как зарегистрировать DLL библиотеки (x32-64 bit) в Windows 10/7
- Отмена и повторная регистрация DLL библиотеки
- Регистрация DLL библиотеки
- Отменить регистрацию файла DLL
- Перерегистрировать все файлы dll
- Регистрация 32-битной DLL в 64-битной ОС
- Что нужно учесть?
Отладка DLL
Автор: Александр Шаргин
Источник: RSDN Magazine #0
Опубликовано: 27.01.2002
Исправлено: 13.03.2005
Версия текста: 1.0
Общие принципы отладки DLL
Хотя в виде DLL реализуются самые различные объекты, существует 2 общих принципа отладки, применимых ко всем разновидностям DLL.
- Поскольку DLL не может выполняться сама по себе, для её отладки необходимо запустить под отладчиком любое использующее её приложение. Полный путь к exe-файлу этого приложения необходимо указать в настройках отладки.
- Необходимо также проследить, чтобы при запуске приложения отладчик загружал отладочные символы нашей DLL. Иначе все точки останова, поставленные в коде DLL, будут отключены. По умолчанию символы загружаются только для тех DLL, которые подключаются при запуске приложения. Для всех остальных (к ним, в частности, относятся все внутрипроцессные COM-серверы) загрузка символов не производится. Если отлаживаемая DLL принадлежит к этой категории, для неё необходимо явно потребовать загрузку отладочных символов. Для этого следует добавить её в список Additional DLLs в настройках отладки.
Дальнейшая отладка DLL ничем принципиально не отличается от отладки приложений.
Иногда приложение, использующее DLL, само должно запускаться ещё одним приложением (именно такая ситуация имеет место с ISAPI-расширениями, которые загружает сервис IIS). В этом случае можно придерживаться следующей тактики.
- Подключиться к приложению, используя методики из предыдущего раздела (в данном случае вызов DebugBreak придётся вставлять в код DLL). Если приложение продолжает выполнение, остановить его ( Debug->Break ).
- Убедиться, что отладчик загрузил символы для DLL (в окне Debug должна появиться строчка вида «Loaded symbols for «). Если этого не произошло, следует добавить отлаживаемую DLL в список Additional DLLs .
- Открыть файлы с исходными текстами DLL (не открывая её проекта!) и расставить необходимые точки останова.
- Возобновить выполнение приложения.
Отладка расширений оболочки Windows
Для расширений оболочки Windows в качестве отлаживаемого приложения указывается explorer.exe .
Закрытие оболочки Windows
Поскольку в системе не могут работать две оболочки одновременно (об исключениях из этого правила мы поговорим немного позже), необходимо завершить оболочку Windows, прежде чем запускать новую из-под отладчика. Чтобы завершить оболочку, нужно:
- Выбрать команду Start->Shut Down .
- Щёлкнуть по кнопке No в раскрывшемся диалоге, удерживая клавиши Ctrl+Alt+Shift .
ПРИМЕЧАНИЕ В Windows 2000 вместо кнопки No следует щёлкнуть по кнопке Cancel . Повторный запуск оболочкиЧтобы снова запустить оболочку по окончании сеанса отладки, достаточно запустить explorer.exe из любой оболочки или из командной строки. Если ни оболочки, ни командной строки под рукой нет, можно использовать следующие приёмы. Под Windows NT/2000:
Отладка расширений в Windows NT/2000В Windows NT/2000 можно запускать каждый новый экземпляр Проводника (Windows Explorer) в отдельном процессе (по умолчанию рабочий стол, панель задач и все Проводники запускаются в отдельных потоках одного процесса Explorer.exe). Благодаря этому можно обойтись без постоянных перезапусков оболочки. Чтобы включить этот режим работы оболочки, необходимо открыть в редакторе реестра ключ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer , добавить в него параметр DesktopProcess (типа REG_DWORD ) и назначить ему значение «1». Изменения вступят в силу после выхода и повторного входа в систему. Выгрузка DLLВ обычном режиме работы оболочка выгружает DLL не сразу, а по истечении некоторого промежутка времени. Это может помешать линкеру перезаписывать файл DLL. Чтобы оболочка выгружала DLL немедленно, нужно создать в реестре ключ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL и записать «1» в его параметр по умолчанию. Отладка Add-in’ов к Visual C++При отладке add-in’ов отладчику Visual C++ приходится отлаживать самого себя. Лучше всего запустить экземпляр среды Visual C++ без add-in’а, а затем использовать этот экземпляр для отладки. Иначе возможны весьма тонкие и неочевидные ошибки, на исправление которых уйдёт уйма времени. Другая возможность для отладки add-in’ов – удалённая отладка (о ней мы поговорим в следующем разделе). Отладка ISAPI-расширенийДанные в этом разделе относятся к IIS5 ISAPI-расширение – это DLL, которая загружается веб-сервером IIS для обработки запросов. В зависимости от настроек защиты веб-приложения (application protection) они могут загружаться как главным файлом IIS inetinfo.exe (режим Low (IIS Process)), так и отдельным процессом dllhost.exe (режимы Medium (Pooled) и High (Isolated)). Чуть позже мы увидим, как отлаживать ISAPI-расширение в том и в другом случае. Но сначала несколько слов о подготовке расширения к отладке. Подготовка к отладкеПрежде чем начинать отладку, рекомендуется проделать следующие шаги.
|