TN063: Отладка библиотек DLL расширения Интернет

Если вы написали DLL расширения Интернет-сервера, может быть заинтересован в получении его под управлением отладчика так что вы можете отслеживать его выполнение, установив точки останова или монитора значения переменных после вызова метода расширения. Подъем Microsoft Internet Information Server (IIS) и работает с библиотекой DLL в отладчике это немного сложнее. Вам будет нужно сначала найти тихий сервера, где можно отлаживать библиотеки DLL в контролируемых условиях. После того как вы нашли такой ресурс, вы можете начать отладку библиотека DLL.

Из-за различий между версии 3.0 и 4.0 IIS, важно знать, какую версию вы будете использовать для отладки DLL.

Отладка с использованием Internet Information Server (3.0 и более ранних)

Для отладки DLL с помощью IIS 3.0 расширения Интернет сервера выполните следующие действия:

  1. Остановите издательской службы IIS с помощью диспетчера IIS или путем остановки служб с значок служб в Windows NT расширенный сервер панели управления. Обратите внимание, что даже несмотря на то, только отладки расширений к World Wide Web, служба публикации все три службы необходимо остановить. Чтобы сделать вещи проще, может потребоваться сделать услуги, «Вручную» начал на панели управления, так что вы можете избежать этот шаг в развитии вашего.

  2. Запустите Microsoft Visual C++ и выберите команду Закрыть рабочей области в файл меню закрыть все открытые рабочей области.

  3. В меню файл выберите пункт Открыть рабочую область для открытия INETINFO.EXE программы. Этот файл находится в папке установки Microsoft Internet Information Server.

  4. В меню проект нажмите кнопку Параметры, а затем щелкните вкладку Отладка в диалоговом окне Параметры проекта.

  5. С общий в списке числовые форматы введите в текстовом поле Аргументы программы:

    -e W3Svc

  6. Выберите Дополнительные библиотеки DLL из раскрывающегося списка Категория . В локальном списке, укажите полный путь и имя библиотеки DLL расширения или DLL. Убедитесь что флажок рядом с каждым помечен.

  7. Нажмите OK , чтобы закрыть диалоговое окно Параметры проекта.

  8. Убедитесь, что.PDB-файл для вашего DLL находится в том же каталоге, что вы планируете отладки библиотек DLL.

Отладка советы

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

Чтобы добавить привилегии, запустите диспетчер пользователей. (Если вы используете Windows NT 3.51, запустите MUSRMGR.EXE. Если вы используете Windows NT 4.0, запустите USRMGR.EXE.) Нажмите кнопку Права пользователя из меню политики . Установите флажок Показать расширенные права пользователя . Выберите акт как часть операционной системы из списка справа и добавьте учетную запись пользователя.

Повторите этот процесс с Создание аудитов безопасности (и в раскрывающемся списке справа). Убедитесь, что остановить все службы Интернета (WWW, ftp и gopher) и INETINFO.EXE не выполняется (используйте список задач для проверки). Выйдите из системы и войти снова. Затем вы можете загрузить IIS с помощью командной строки:

INetInfo.Exe -e W3Svc

Чтобы загрузить IIS в режиме отладчика (к примеру, в WinDbg), используйте следующую командную строку:

WinDbg INetInfo.Exe -e W3Svc

Ты готов к работе. В Visual C++ выберите меню построить команду для отладки и нажмите кнопку Go. Это действие запускает службу публикации в WWW, и отладчик будет знать символов в библиотеке DLL. Можно игнорировать предупреждение, что файл не имеет отладочной информации.

При закрытии Visual C++, сохраните рабочую область для INETINFO.EXE. Таким образом, можно избежать, вводить каждого случая установить параметры для сеанса отладки. Просто откройте INETINFO.MDS файл рабочей области, когда вы будете готовы снова запустить отладчик.

Кэшированные DLL

Можно настроить параметр реестра в HKEY_LOCAL_MACHINE/система/CurrentControlSet/услуги/W3SVC/параметры/CacheExtensions чтобы сервер повторно инициализировать библиотеки DLL каждый раз, когда они используются. Если этот параметр имеет значение 1, сервер будет хранить библиотеки DLL, загруженной в память как можно дольше. Это значение по умолчанию для сервера, так как он помогает достичь максимальной производительности сервера и должно быть изменено только в том случае, если вы используете сервер для отладки. Если вы делаете параметр 0, сервер будет всегда загрузить DLL расширения каждый раз, когда они используются.

Заставляет сервер для перезагрузки библиотеки DLL является полезным, когда библиотека DLL может разбивать или нарушить любые данные каждого экземпляра, он сохраняет. Заставить сервер для повторной инициализации библиотеки DLL, вы можете получить ваш DLL обратно в предсказуемой государство с минимальными усилиями. Не забудьте проверить DLL с использованием обычных CacheExtensions, однако, чтобы убедиться, код библиотеки DLL не полностью зависимыми от этой начальное состояние.

Отладка с использованием Internet Information Server (4.0 и выше)

Существует несколько способов создать условия для отладки ваши серверные компоненты и библиотеки DLL расширения Интернет сервера при использовании служб IIS 4.0 или более поздней версии. При использовании отладчика, способного к процессам Windows NT, можно использовать эту функцию для отладки компонента или расширение. К примеру если отладка выполняется с помощью Visual C++, выполните следующие действия:

  1. Запустите процесс iisadmin. Это можно сделать из командной строки с командой net start iisadmin. Можно также использовать диалоговое окно службы на панели управления для начала службу IIS Admin, которая начнется iisadmin.

  2. Запустите Visual C++. Выберите пункт начать отладку в меню построить и выберите команду присоединить к процессу.

  3. Установите флажок Показать процессы системы.

  4. Выберите процесс inetinfo из списка и нажмите кнопку ОК.

  5. Запустите службу w3svc. Это можно сделать из командной строки с командой net start w3svc. Можно также использовать диалоговое окно службы на панели управления для запуска World Wide Web Publishing службы.

Если вы используете отладчика не может подключиться к процессам Windows NT, выполните следующие шаги для создания соответствующей среды отладки:

  1. Откройте диалоговое окно службы в панели управления.

  2. Выберите службы IIS Admin и нажмите кнопку Запуск.

  3. Установите флажок Разрешить службу на взаимодействие с рабочим столом и нажмите кнопку ОК.

  4. Повторите шаги 2 и 3 для всех процессов, которые выполняются в рамках IIS Admin процесса, например служба World Wide Web Publishing и служба FTP-публикации.

  5. Используйте редактор реестра (REGEDIT) для добавления подраздел с именем Inetinfo.Exe в HKEY_LOCAL_MACHINE/программное обеспечение/Microsoft/WindowsNT/CurrentVersion/фото параметры выполнения файла ключа.

  6. Добавьте следующую запись в этот новый ключ:

    Отладчик = lt; DebuggerExeName > где DebuggerExeName — это полный путь к отладчику вы используете.

Когда запускается служба публикации World Wide Web, будет также запущен отладчик. Теперь вы можете установить соответствующие точки останова в DLL расширения Интернет-сервера.

Вы не сможете установить точки останова в исходном коде компонента до тех пор, пока компонент загружен в память. Для этого запустите Internet Explorer и просмотр.ASP-странице, содержащей объект. Как только страница загружается, вы сможете установить точки останова в компоненте. Нажмите кнопку обновить для просмотра страницы снова и запустить выбранные точки останова. Если компонент не может быть загружен даже один раз (к примеру, если ошибка происходит в код запуска компонента), вам нужно загрузить DLL компонента до начала сеанса отладки. (См. шаг 11 ниже).

В некоторых случаях не удается использовать любой из двух процедур, изложенных выше. Если у вас есть трудности с использованием любой из этих стратегий, существует третий подход, который был описан в предыдущих версиях IIS. Этот третий подход требует создание привилегий безопасности Windows NT, а также вносить изменения в реестр. Он будет также отключить возможность запуска служб IIS в качестве службы. Этот подход должен использоваться только если предыдущие две стратегии не.

  1. Добавить Вход в качестве службы, акт как часть операционной системыи права на Создание аудитов безопасности на локальном компьютере для учетной записи Windows NT, которые вы будете использовать при отладке DLL расширения Интернет-сервера с помощью диспетчера пользователей для доменов administration tool (USRMGR).

  2. Использовать программу распределенных COM настройки (DCOMCNFG) чтобы изменить личность службу IIS Admin на учетную запись пользователя, которая будет использоваться для отладки.

  3. Чтобы удалить ключевое слово LocalService из всех связанных с IISADMIN подразделов под HKEY_CLASSES_ROOT/AppID используйте редактор реестра (REGEDIT). Это ключевое слово можно найти в следующих подразделах:

    {61738644-F196-11D0-9953-00C04FD919C1} / / IIS WAMREG admin служба

    {9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} / / расширение IIS Admin крипто

    {A9E69610-B80D-11D0-B9B9-00A0C922E750} / / Служба IISADMIN

    LocalService ключевое слово можно найти в дополнительные подразделы AppID.

  4. Добавьте LocalServer32 подразделы для всех связанных с IISADMIN подразделов реестра в узле CLSID. Это будет включать разделы, соответствующие все подразделы, вынутые на предыдущем шаге. Задать значение по умолчанию для этих новых ключей для lt; путь > \inetinfo.exe -e w3svc. (<path> обычно является «c:\winnt\system32\inetsrv»).

  5. Остановите службы WWW и FTP из консоли управления Microsoft или из диалогового окна службы в панели управления.

  6. Запустите Visual C++ и выберите вкладку Отладка в диалоговом окне Параметры проекта.

  7. Введите следующий путь в поле исполняемый файл для сеанса отладки:

    C:\WINNT\System32\Inetsrv\Inetinfo.exe

  8. Введите следующую команду в поле Аргументы программы:

    w3svc -e

  9. Выберите вкладку ссылки в диалоговом окне Параметры проекта.

  10. Введите имя и путь Интернет DLL расширения сервера выполняется отладка в поле имя выходного файла.

  11. При необходимости добавьте компонент библиотеки DLL в список Дополнительные библиотеки DLL , загружаемые до запуска приложения. Это позволит вам установить точки останова в коде запуска компонента.

  12. Нажмите кнопку Go , чтобы запустить сеанс отладки.

Примечание   После завершения сеанса отладки, вы должны отменить шаги 5 — 1 для восстановления предыдущих параметров и позволяют IIS для запуска в качестве службы.

Технические примечания по номеру |nbsp; Технические примечания по категориям

Index