디버그 및 추적 기능
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 추적 항목을 참조하세요.
디버그 버전의 Ws2_32.dll 사용
Windows Vista 및 Winsock 추적에서 디버그 버전의 Ws2_32.dll 조합하면 Windows 소켓 2 API 또는 SPI의 모든 프로시저 호출을 모니터링하고 어느 정도 제어할 수 있습니다.
Windows Vista용 Microsoft Windows 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또는 서비스 공급자의 문제를 더 잘 격리할 수 있습니다.
관련 항목