TN063: Debugowania bibliotek DLL rozszerzenia internetowe

Jeśli edytowałeś biblioteki DLL Internet Server rozszerzenia, może być zainteresowany to działa debugera, więc można śledzić jego wykonanie, ustawianie punktów przerwania lub wartości zmiennej monitora po nazywa się rozszerzenie. Wstawania Microsoft Internet Information Server (IIS) i systemem z biblioteki DLL w oknie Debuger jest nieco kłopotliwe. Musisz najpierw odnaleźć serwer cichym gdzie można debugować biblioteki DLL w kontrolowanych ustawienie. Po znalezieniu takich zasobów, można uruchomić debugowanie biblioteki DLL.

Ze względu na różnice w wersji 3.0 i 4.0 programu IIS należy sprawdzić, która wersja będzie używany do debugowania biblioteki DLL.

Debugowanie przy użyciu Internet Information Server (3.0 i wcześniejsze)

Wykonaj następujące kroki w celu debugowania serwera internetowego rozszerzenie DLL przy użyciu usług IIS 3.0:

  1. Zatrzymanie publikowania usług IIS przy użyciu Menedżera IIS lub zatrzymywanie usług z ikony usługi w panelu sterowania serwera zaawansowane w systemie Windows NT. Należy zauważyć, że musi zatrzymać wszystkie usługi, trzy, mimo że są tylko debugowanie rozszerzeń do publikowania usługi sieci World Wide Web. Aby ułatwić rzeczy, warto usług "Ręcznie" rozpoczął się w panelu sterowania, dzięki czemu można uniknąć tego kroku, później w projektowaniu.

  2. Uruchom program Microsoft Visual C++ i kliknij polecenie Zamknięcie obszaru roboczego w menu plik , aby zamknąć wszystkie otwarte obszaru roboczego.

  3. W menu plik kliknij polecenie Otwórz obszar roboczy do otwarcia INETINFO.EXE programu. Ten plik znajduje się w katalogu, w którym zainstalowany jest program Microsoft Internet Information Server.

  4. W menu Projekt kliknij przycisk Ustawienia, a następnie kliknij kartę debugowania w oknie dialogowym Ustawienia projektu.

  5. Z ogólnym zaznaczone w polu Kategoria wpisać następujące polecenie w polu tekstowym Program argumenty:

    -e W3Svc

  6. Wybierz Dodatkowe biblioteki DLL z listy rozwijanej Kategorie . Następnie w polu Nazwy lokalne określić pełną ścieżkę i nazwę biblioteki DLL rozszerzenia lub bibliotek DLL. Upewnij się, że zaznaczone jest pole wyboru obok każdego.

  7. Kliknij przycisk OK , aby zamknąć okno dialogowe Ustawienia projektu.

  8. Upewnij się, że.WPB plik DLL jest w tym samym katalogu co dll planujesz debugowania.

Debugowanie porady

IIS mogą być uruchamiane jako wniosku interaktywne, co znacznie ułatwia debugowanie. W tym celu należy wprowadzić kilka zmian do systemu. Dla konta użytkownika, które zamierzasz uruchomić serwer mocy musisz dodać kilka uprawnień.

Aby dodać uprawnienia, należy uruchomić Menedżera użytkowników. (Jeśli korzystasz z systemu Windows NT 3.51, uruchom MUSRMGR.EXE. Jeśli używasz systemu Windows NT 4.0, uruchom usrmgr transport.EXE.) Kliknij Praw użytkownika z menu polityki . Zaznacz pole wyboru Pokaż zaawansowane prawa użytkownika . Następnie wybierz działanie jako część systemu operacyjnego z listy rozwijanej po prawej stronie i Dodaj konto użytkownika.

Powtórzyć ten proces z Generowania inspekcji zabezpieczeń (także na liście rozwijanej po prawej stronie). Upewnij się, że wszystkie usługi internetowe (WWW, ftp i gopher) są zatrzymywane i INETINFO.EXE nie jest uruchomiony (aby sprawdzić Użyj listy zadań). Wyloguj się i ponowne zalogowanie. Następnie można załadować usługi IIS z wiersza polecenia:

INetInfo.Exe -e W3Svc

Aby załadować program IIS w debugerze (na przykład w ramach WinDbg), użyj następującego wiersza polecenia:

WinDbg INetInfo.Exe -e W3Svc

Jesteś gotowy pójść. W Visual C++ wskaż polecenie Debug menu budować , a następnie kliknij przycisk Przejdź. Ta akcja uruchamia usługa publikowania w sieci WWW i debuger będą świadomi symbole w bibliotece DLL. Można zignorować ostrzeżenie, że plik nie ma, informacje o debugowaniu.

Po zamknięciu programu Visual C++, z wyjątkiem obszaru roboczego INETINFO.EXE. Uniknąć w ten sposób podczas ponownego ustawienia dla sesji debugowania. Wystarczy otworzyć INETINFO.MDS plik obszaru roboczego, gdy zechcesz ponownie uruchomić debugera.

Buforowane biblioteki DLL

Można dostosować ustawienie rejestru HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/usługi/W3SVC/parametry/CacheExtensions do serwera ponownie zainicjować biblioteki DLL każdym razem, gdy są one używane. Jeśli to ustawienie ma wartość 1, serwer będzie przechowywać biblioteki DLL załadowanych do pamięci tak długo, jak to możliwe. Jest to domyślne ustawienie dla serwera, ponieważ pomaga osiągnąć najwyższą wydajność serwera i powinny być zmienione tylko, jeśli używasz serwera dla debugowania. Jeśli ustawienie 0, serwer zawsze przeładuje bibliotek DLL rozszerzeń są stosowane przy każdym.

Wymuszanie na serwerze, aby ponownie załadować biblioteki DLL jest pomocne, gdy biblioteki DLL może awarii lub zachwiać dane poszczególnych wystąpień, które utrzymuje. Przez serwer zainicjować biblioteki DLL, biblioteka DLL można uzyskać wstecz, do przewidywalnego stanu przy minimalnym nakładzie pracy. Należy przetestować, biblioteka DLL przy użyciu normalnego ustawienia CacheExtensions, jednak do upewnij się, że kod w bibliotece DLL nie jest całkowicie zależne od tego stan początkowy.

Debugowanie przy użyciu Internet Information Server (4.0 i nowsze wersje)

Istnieje kilka sposobów na stworzeniu środowiska do debugowania składniki serwera i bibliotek DLL rozszerzeń serwera internetowego, korzystając z usług IIS w wersji 4.0 lub nowszej. Jeśli używasz debugera zdolne do dołączania do procesu systemu Windows NT, można użyć tej funkcji do debugowania części lub rozszerzenie. Na przykład jeśli podczas debugowania, w języku Visual C++, wykonaj następujące kroki:

  1. Rozpocznij proces iisadmin. Można to zrobić z polecenia net start iisadmin, w wierszu polecenia. Można również użyć okno dialogowe usługi w panelu sterowania uruchomić usługę Administrator programu IIS, który będzie uruchamiania usługi iisadmin.

  2. Uruchom program Visual C++. Wskaż polecenie Uruchom program Debug: polecenie menu budowania i kliknij przycisk Dołącz, aby proces.

  3. Zaznacz pole wyboru Pokaż Proces systemowy.

  4. Wybierz procesu inetinfo z listy i kliknij przycisk OK.

  5. Uruchom usługę w3svc. Można to zrobić z wiersza polecenia polecenie net start w3svc. Okno dialogowe usługi w panelu sterowania można również użyć do uruchomienia usługa publikowania w sieci World Wide Web.

Jeśli do procesu system Windows NT nie można dołączać debugera, którego używasz, podjąć następujące kroki, aby ustalić odpowiednie środowisko debugowania:

  1. Otwórz okno dialogowe usługi w panelu sterowania.

  2. Wybierz administratora usług IIS i kliknij przycisk uruchamiania.

  3. Zaznacz pole wyboru Zezwalaj usłudze na interakcja z pulpitem i kliknij przycisk OK.

  4. Powtórz kroki 2 i 3 dla wszystkich procesów, które są uruchamiane w ramach procesu usług IIS Admin, na przykład usługa publikowania w sieci World Wide Web i FTP Publishing Service.

  5. Użyj Edytora rejestru (REGEDIT), aby dodać podklucz o nazwie Inetinfo.Exe w kluczu HKEY_LOCAL_MACHINE/oprogramowania/Microsoft/WindowsNT/CurrentVersion/obraz pliku wykonanie opcji.

  6. Dodaj następujący wpis do tego nowego klucza:

    Debuger = lt; DebuggerExeName > gdzie DebuggerExeName jest pełną ścieżką do debugera jest używany.

Gdy uruchomiona jest usługa publikowania w sieci World Wide Web, debuger również zostanie uruchomiony. Można teraz ustawić odpowiednie punkty przerwania w Biblioteka DLL rozszerzenia serwera internetowego.

Użytkownik nie będzie mógł ustawić punkty przerwania w kodzie źródłowym składnika, dopóki składnik został załadowany do pamięci. Aby to zrobić, uruchom program Internet Explorer i widok.Strony ASP, zawierającej obiekt. Natychmiast po załadowaniu strony, należy ustawić punkty przerwania w składnik. Kliknij przycisk Odśwież , aby ponownie wyświetlić stronę i wyzwalania przerwania, które wybrano. Jeśli składnik nie można załadować jeszcze raz (na przykład, jeśli błąd występuje w części uruchamiania kodu), musisz załadować składnik biblioteki DLL przed do rozpoczęcia sesji debugowania. (Zobacz krok 11 poniżej).

W niektórych przypadkach nie można można używać jednej z dwóch procedur przedstawionych powyżej. Jeśli masz trudności przy użyciu jednej z tych strategii, istnieje podejście trzeciego, który został opisany w poprzednich wersjach usług IIS. Podejście to trzeci wymaga ustanowienia uprawnieniami zabezpieczeń Windows NT jak również wprowadzania zmian w rejestrze. Będzie także wyłączyć możliwość usługi IIS są uruchomione jako usługa. To podejście powinno być używane wyłącznie jeżeli poprzednich dwóch strategii.

  1. Użyj Menedżera użytkowników dla domen narzędzia administracyjnego (USRMGR), aby dodać logowania jako usługa, działanie jako część systemu operacyjnegoi prawa Generowanie inspekcji zabezpieczeń na komputerze lokalnym kontu systemu Windows NT, który będzie używany podczas debugowania biblioteki DLL rozszerzenia serwera internetowego.

  2. Użyj narzędzia Distributed COM konfiguracji (DCOMCNFG), aby zmienić tożsamość administratora usług IIS do konta użytkownika, które będzie używać do debugowania.

  3. Aby usunąć słowa kluczowego LocalService od wszystkich podkluczy związane usługi IISADMIN pod HKEY_CLASSES_ROOT/AppID, należy użyć Edytora rejestru (REGEDIT). Słowo kluczowe this można znaleźć w następujących podkluczach:

    {61738644-F196-11D0-9953-00C04FD919C1} / / IIS WAMREG admin Service

    {9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} / / IIS Admin Crypto rozszerzenie

    {A9E69610-B80D-11D0-B9B9-00A0C922E750} / / usługi IISADMIN

    Słowo kluczowe LocalService można znaleźć w dodatkowych podkluczy AppID.

  4. Dodawanie podkluczy LocalServer32 do wszystkich podkluczy związane usługi IISADMIN węźle CLSID rejestru. Będzie to obejmować podklucze odpowiadające wszystkie podklucze, które można usunąć w poprzednim kroku. Ustawić domyślną wartość tych nowych kluczy lt; ścieżka > \inetinfo.exe -e w3svc. (<path> jest zwykle "c:\winnt\system32\inetsrv".)

  5. Zatrzymanie usługi WWW i FTP z konsoli Microsoft Management Console lub okno dialogowe usługi w panelu sterowania.

  6. Uruchom Visual C++ i wybierz kartę debugowania w oknie dialogowym Ustawienia projektu.

  7. Wpisz następującą ścieżkę w polu plik wykonywalny dla sesji debugowania:

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

  8. Wpisz w polu Program argumenty:

    w3svc -e

  9. Wybierz kartę łącze w oknie dialogowym Ustawienia projektu.

  10. Wpisz nazwę i ścieżkę biblioteki DLL debugowania, w polu Nazwa pliku wyjściowego rozszerzenia serwera internetowego.

  11. Opcjonalnie dodaj składnik biblioteki DLL do listy Dodatkowe biblioteki DLL , które są ładowane przed uruchomieniem aplikacji. Umożliwi to punkty przerwania ustawiono w składnik uruchamianie kodu.

  12. Kliknij przycisk Przejdź , aby rozpocząć sesji debugowania.

Uwaga   Po zakończeniu sesji debugowania, należy wycofać kroki od 5 do 1 Aby przywrócić poprzednie ustawienia i umożliwić usługi IIS są uruchamiane jako usługa.

Uwagi techniczne przez liczbę |nbsp; Uwagi techniczne według kategorii

Index