Средства отладки и трассировки

Разработчикам приложений Windows Sockets 2 необходимо изолировать ошибки в:

  • Приложение.
  • Ws2_32.dll или один из библиотек DLL оболочки совместимости.
  • Поставщик службы.

Windows Sockets 2 решает эту потребность с помощью нескольких компонентов и функций:

  • Встроенная поддержка трассировки Winsock в Windows Vista и более поздних версиях.
  • Специально разработанная отладочная версия Ws2_32.dll в Windows Vista.
  • Отдельное средство отладки и трассировки примитивов для использования в Windows Server 2003 и Windows XP.

Трассировка Winsock с помощью трассировки событий для Windows

Встроенная поддержка трассировки Winsock с помощью трассировки событий Windows (ETW) включена в Windows Vista и более поздних версий. Это предпочтительный метод трассировки вызовов Winsock в Windows Vista и более поздних версиях. Трассировка Winsock с помощью трассировки событий Windows упрощена и работает в розничных версиях Windows. Дополнительное программное обеспечение или компоненты не требуются. Эту функцию необходимо включить в Windows Vista и более поздних версиях. Дополнительные сведения см. в разделах о трассировке Winsock .

Использование отладочной версии Ws2_32.dll

Сочетание отладочной версии Ws2_32.dll в Windows Vista и трассировки Winsock позволяет отслеживать и, в некоторой степени, контролировать все вызовы процедур через API windows Sockets 2 или SPI.

Если в расположении по умолчанию установлена версия пакета средств разработки программного обеспечения (SDK) Microsoft Windows для Windows Vista, отладочные версии Ws2_32.dll для различных архитектур находятся в следующей папке:

C:\Program Files\Microsoft SDK\Windows\v6.0\NoRedist

Следует использовать проверенную версию Ws2_32.dll , соответствующую версии Windows и тестируемой версии пакета обновления. Имейте в виду, что могли быть применены исправления для системы безопасности, которые обновили Ws2_32.dll в тестовой системе. Подписки на DVD/CD пакета SDK для Windows Vista и более ранние версии пакета SDK включают проверенные сборки для различных версий Windows. Следует использовать ту же проверенную версию Ws2_32.dll , что и розничную версию, которая использовалась в тестируемой системе. Обратите внимание, что поведение, выполняемое в проверенной сборке, будет не таким же, как при выполнении в розничной сборке.

Примечание Пакет Windows SDK для Windows Server 2008 и более поздних версий больше не включает специальные отладочные версии Ws2_32.dll. Разработчикам следует использовать трассировку Winsock с помощью etw, так как для этой функции не требуются отладочные сборки.

Средство отладки и трассировки Winsock в Windows Server 2003 и Windows XP

Более старые версии Windows до Windows 8 и Windows Server 2012 поддерживают отдельное средство отладки и трассировки примитивов, которое входит в состав пакета SDK для Windows и более старого пакета SDK для платформы. Средство отладки и трассировки следует использовать только в Windows Server 2003 и Windows XP, где трассировка Winsock не поддерживается.

Если пакет Windows SDK для Windows 7 установлен в расположении по умолчанию, этот примитивный компонент трассировки Winsock устанавливается в следующей папке:

C:\Program Files\Microsoft SDK\Windows\v7.0\Samples\NetDs\winsock\dt_dll

Файл DbgSpec.doc в этой папке содержит документацию по этому средству примитивной трассировки. Для использования этого средства необходимо скомпилировать пример кода в папке dt_dll. Разработчики могут использовать исходный код для разработки версий библиотеки DLL отладки и трассировки, соответствующих их конкретным потребностям.

Обратите внимание, что этот примитивный компонент трассировки Winsock будет работать только с установленной отладочной версией Ws2_32.dll . Поэтому вам потребуется получить проверенную версию Ws2_32.dll , соответствующую версии Windows и тестируемой версии пакета обновления.

Ограничение этого примитивного средства трассировки dt_dll заключается в том, что пример кода использует глобальную блокировку (критический раздел) для каждого вызова функции Winsock. Таким образом, этот объект не полезен в борьбе с расовыми условиями. Образец кода потребуется существенно переписать, чтобы сделать это средство трассировки полезным для решения большинства реальных проблем Winsock (замены глобальных блокировок). Этот пример кода позволяет разработчикам отслеживать вызовы процедур, возвращаемые процедуры, значения параметров и возвращаемые значения.

Разработчики могут использовать этот примитивный механизм для трассировки вызовов процедур, возвращаемых процедур, значений параметров и возвращаемых значений. Значения параметров и возвращаемые значения можно изменить при вызове процедуры или возврате процедуры. При необходимости вызов процедуры можно предотвратить или перенаправить. Благодаря доступу к этому уровню информации и контроля разработчик может лучше изолировать проблему в приложении, Ws2_32.dllили поставщике услуг.

Трассировка Winsock