Debugowanie i śledzenie obiektów
Deweloperzy aplikacji Windows Sockets 2 muszą odizolować usterki w następujących elementy:
- Aplikacja.
- Ws2_32.dll lub jedną ze zgodności bibliotek DLL podkładek.
- Dostawca usług.
Windows Sockets 2 rozwiązuje tę potrzebę za pośrednictwem kilku składników i funkcji:
- Zintegrowana obsługa śledzenia winsock w systemie Windows Vista i nowszych wersjach.
- Specjalnie opracowana wersja debugowania Ws2_32.dll w systemie Windows Vista.
- Oddzielny podstawowy obiekt debugowania i śledzenia do użycia w systemach Windows Server 2003 i Windows XP.
Śledzenie winsock przy użyciu śledzenia zdarzeń dla systemu Windows
Zintegrowana obsługa śledzenia winsock przy użyciu śledzenia zdarzeń dla systemu Windows (ETW) jest zawarta w systemie Windows Vista i nowszych. Jest to preferowana metoda śledzenia wywołań Winsock w systemie Windows Vista i nowszych. Śledzenie Winsock przy użyciu funkcji ETW jest lekkie i działa w wersjach detalicznych systemu Windows. Nie są wymagane żadne dodatkowe oprogramowanie lub składniki. Ta funkcja musi być włączona tylko w systemie Windows Vista i nowszych. Aby uzyskać bardziej szczegółowe informacje, zobacz tematy śledzenia usługi Winsock.
Używanie wersji debugowania Ws2_32.dll
Kombinacja wersji debugowania Ws2_32.dll w systemie Windows Vista i śledzenia Winsock umożliwia monitorowanie wszystkich wywołań procedur w interfejsie API Windows Sockets 2 lub SPI oraz, w pewnym zakresie, kontrolowanym.
Jeśli wersja zestawu Microsoft Windows Software Development Kit (SDK) dla systemu Windows Vista jest zainstalowana w domyślnej lokalizacji, wersje debugowania Ws2_32.dll dla różnych architektur znajdują się w następującym folderze:
C:\Program Files\Microsoft SDKs\Windows\v6.0\NoRedist
Należy użyć sprawdzonej wersji Ws2_32.dll zgodnej z wersją systemu Windows i dodatkiem Service Pack, na którym testujesz. Należy pamiętać, że poprawki zabezpieczeń mogły zostać zastosowane, które zaktualizowały Ws2_32.dll w systemie testowym. Zestaw Windows SDK dla systemu Windows Vista i wcześniejsze subskrypcje zestawu SDK (SDK) dvd/CD obejmują sprawdzone kompilacje dla różnych wersji systemu Windows. Należy użyć tej samej sprawdzonej wersji Ws2_32.dll co wersja detaliczna używana w testowanym systemie. Należy również pamiętać, że zachowanie uruchomione w ramach zaznaczonej kompilacji nie będzie takie samo jak w przypadku kompilacji detalicznej.
Uwaga Zestaw Windows SDK dla systemu Windows Server 2008 i nowszych nie zawiera już specjalnych wersji debugowania Ws2_32.dll. Deweloperzy powinni zamiast tego używać śledzenia winsock przy użyciu funkcji ETW, ponieważ ta funkcja nie wymaga kompilacji debugowania.
Funkcja debugowania i śledzenia winsock w systemach Windows Server 2003 i Windows XP
Starsze wersje systemu Windows wcześniejsze niż Windows 8 i Windows Server 2012 obsługują oddzielną pierwotną funkcję debugowania i śledzenia, która jest dołączona jako przykład z zestawem Windows SDK i starszym zestawem SDK platformy. Funkcja debugowania/śledzenia powinna być używana tylko w systemach Windows Server 2003 i Windows XP, w których śledzenie Winsock nie jest obsługiwane.
Jeśli zestaw Windows SDK dla systemu Windows 7 jest zainstalowany w lokalizacji domyślnej, ta pierwotna funkcja śledzenia Winsock jest zainstalowana w następującym folderze:
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\dt_dll
Plik DbgSpec.doc w tym folderze zawiera dokumentację dotyczącą tego pierwotnego obiektu śledzenia. Aby móc korzystać z tej funkcji, należy skompilować przykładowy kod w folderze dt_dll. Deweloperzy mogą używać kodu źródłowego do opracowywania wersji biblioteki DLL debugowania/śledzenia spełniającej określone potrzeby.
Należy pamiętać, że ta pierwotna funkcja śledzenia winsock będzie działać tylko z zainstalowaną wersją debugowania Ws2_32.dll. Dlatego należy uzyskać sprawdzoną wersję Ws2_32.dll zgodną z wersją systemu Windows i dodatkiem Service Pack, na którym testujesz.
Ograniczeniem tego pierwotnego obiektu śledzenia dt_dll jest to, że przykładowy kod używa globalnej blokady (sekcji krytycznej) dla każdego wywołania funkcji Winsock. Więc ten obiekt nie jest przydatny w radzeniu sobie z warunkami wyścigu. Przykładowy kod musi zostać znacząco przepisany, aby ten obiekt śledzenia był przydatny do radzenia sobie z najbardziej rzeczywistymi problemami usługi Winsock (zastępując globalne blokady). Ten przykładowy kod umożliwia deweloperom śledzenie wywołań procedur, zwracanych procedur, wartości parametrów i zwracanych wartości.
Deweloperzy mogą używać tego mechanizmu pierwotnego do śledzenia wywołań procedur, zwracania procedur, wartości parametrów i zwracanych wartości. Wartości parametrów i wartości zwracane mogą być zmieniane przy wywołaniu procedury lub zwracaniu procedury. W razie potrzeby wywołanie procedury można uniemożliwić lub przekierować. Dzięki dostępowi do tego poziomu informacji i kontroli deweloper może lepiej odizolować problem w aplikacji, Ws2_32.dlllub dostawcy usług.
Tematy pokrewne