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

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

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

Windows Сокеты 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 с помощью etW упрощена и работает в розничных версиях 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 SDKs\Windows\v6.0\NoRedist

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

Примечание Пакет SDK Windows для 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 не поддерживается.

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

C:\Program Files\Microsoft SDKs\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