디버그 및 추적 기능

Windows Sockets 2 애플리케이션 개발자는 다음에서 버그를 격리해야 합니다.

  • 애플리케이션입니다.
  • Ws2_32.dll 또는 호환성 shim DLL 중 하나입니다.
  • 서비스 공급자입니다.

Windows 소켓 2는 다음과 같은 여러 구성 요소 및 기능을 통해 이러한 필요성을 해결합니다.

  • Windows Vista 이상에서 Winsock 추적에 대한 통합 지원.
  • Windows Vista의 Ws2_32.dll 특별히 고안된 디버그 버전입니다.
  • Windows Server 2003 및 Windows XP에서 사용할 별도의 기본 디버그 및 추적 기능입니다.

Windows용 이벤트 추적을 사용하는 Winsock 추적

ETW(Windows용 이벤트 추적)를 사용하는 Winsock 추적에 대한 통합 지원은 Windows Vista 이상에 포함되어 있습니다. 이는 Windows Vista 이상에서 Winsock 호출을 추적하는 데 선호되는 방법입니다. ETW를 사용하는 Winsock 추적은 가볍고 Windows의 소매 버전에서 작동합니다. 추가 소프트웨어 또는 구성 요소는 필요하지 않습니다. 이 기능은 Windows Vista 이상에서만 사용하도록 설정하면 됩니다. 자세한 내용은 Winsock 추적 topics 참조하세요.

디버그 버전의 Ws2_32.dll 사용

Windows Vista 및 Winsock 추적에서 디버그 버전의 Ws2_32.dll 조합하면 Windows 소켓 2 API 또는 SPI의 모든 프로시저 호출을 모니터링하고 어느 정도 제어할 수 있습니다.

Windows Vista용 Microsoft SDK(소프트웨어 개발 키트) 버전이 기본 위치에 설치된 경우 다양한 아키텍처에 대한 Ws2_32.dll 디버그 버전은 다음 폴더 아래에 있습니다.

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

Windows 버전 및 테스트 중인 서비스 팩과 일치하는 확인된 버전의Ws2_32.dll 사용해야 합니다. 테스트 시스템에서 Ws2_32.dll 업데이트한 보안 패치가 적용되었을 수 있습니다. Windows Vista용 Windows SDK 및 이전 SDK(플랫폼 소프트웨어 개발 키트) DVD/CD 구독에는 다양한 버전의 Windows에 대해 확인된 빌드가 포함됩니다. 테스트 중인 시스템에서 사용된 소매 버전과 동일한 확인된 버전의Ws2_32.dll 사용해야 합니다. 또한 확인된 빌드에서 실행되는 동작은 소매 빌드에서 실행되는 동작과 동일하지 않습니다.

참고 Windows Server 2008 이상용 Windows SDK에는 더 이상 Ws2_32.dll특별한 디버그 버전이 포함되어 있지 않습니다. 이 기능에는 디버그 빌드가 필요하지 않으므로 개발자는 ETW를 사용하여 Winsock 추적을 대신 사용해야 합니다.

Windows Server 2003 및 Windows XP의 Winsock 디버그 및 추적 기능

Windows 8 및 Windows Server 2012 이전 버전의 Windows는 Windows SDK 및 이전 플랫폼 SDK를 사용하여 샘플로 포함된 별도의 기본 디버그 및 추적 기능을 지원합니다. 디버그/추적 기능은 Winsock 추적이 지원되지 않는 Windows Server 2003 및 Windows XP에서만 사용해야 합니다.

Windows 7용 Windows SDK가 기본 위치에 설치된 경우 이 기본 Winsock 추적 기능은 다음 폴더에 설치됩니다.

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

이 폴더의 DbgSpec.doc 파일은 이 기본 추적 기능에 대한 설명서를 제공합니다. 이 기능을 사용하려면 dt_dll 폴더의 샘플 코드를 컴파일해야 합니다. 개발자는 소스 코드를 사용하여 특정 요구 사항을 충족하는 디버그/추적 DLL 버전을 자유롭게 개발할 수 있습니다.

이 기본 Winsock 추적 기능은 설치된 Ws2_32.dll 디버그 버전에서만 작동합니다. 따라서 테스트 중인 Windows 버전 및 서비스 팩과 일치하는 Ws2_32.dll 확인된 버전을 가져와야 합니다.

이 기본 dt_dll 추적 기능의 제한 사항은 샘플 코드가 각 Winsock 함수 호출에 전역 잠금(중요 섹션)을 사용한다는 것입니다. 따라서이 시설은 경주 조건을 다루는 데 유용하지 않습니다. 이 추적 기능을 가장 실제 Winsock 문제(전역 잠금 대체)를 처리하는 데 유용하게 사용하려면 샘플 코드를 실질적으로 다시 작성해야 합니다. 이 샘플 코드를 사용하면 개발자가 프로시저 호출, 프로시저 반환, 매개 변수 값 및 반환 값을 추적할 수 있습니다.

개발자는 이 기본 메커니즘을 사용하여 프로시저 호출, 프로시저 반환, 매개 변수 값 및 반환 값을 추적할 수 있습니다. 프로시저 호출 또는 프로시저 반환 시 매개 변수 값과 반환 값을 변경할 수 있습니다. 원하는 경우 프로시저 호출을 방지하거나 리디렉션할 수 있습니다. 이 수준의 정보 및 제어에 액세스하면 개발자가 애플리케이션, Ws2_32.dll또는 서비스 공급자에서 문제를 더 잘 격리할 수 있습니다.

Winsock 추적