Instalações de depuração e rastreamento

Os desenvolvedores de aplicativos do Windows Sockets 2 precisam isolar bugs em:

  • O aplicativo.
  • O Ws2_32.dll ou uma das DLLs de shim de compatibilidade.
  • O provedor de serviços.

O Windows Sockets 2 atende a essa necessidade por meio de vários componentes e recursos:

  • Suporte integrado para rastreamento winsock no Windows Vista e posterior.
  • Uma versão de depuração especialmente concebida do Ws2_32.dll no Windows Vista.
  • Um recurso de depuração e rastreamento primitivo separado para uso no Windows Server 2003 e no Windows XP.

Rastreamento winsock usando o Rastreamento de Eventos para Windows

O suporte integrado para rastreamento winsock usando o ETW (Rastreamento de Eventos para Windows) está incluído no Windows Vista e posterior. Esse é o método preferencial para rastrear chamadas winsock no Windows Vista e posteriores. O rastreamento winsock usando ETW é leve e funciona em versões de varejo do Windows. Nenhum software ou componente adicional é necessário. Esse recurso só precisa ser habilitado no Windows Vista e posterior. Para obter informações mais detalhadas, consulte os tópicos de Rastreamento do Winsock .

Usando uma versão de depuração do Ws2_32.dll

A combinação de uma versão de depuração do Ws2_32.dll no rastreamento do Windows Vista e do Winsock permite que todas as chamadas de procedimento na API do Windows Sockets 2 ou spi sejam monitoradas e, até certo ponto, controladas.

Se uma versão do Microsoft Windows Software Development Kit (SDK) para Windows Vista estiver instalada no local padrão, as versões de depuração do Ws2_32.dll para várias arquiteturas estarão localizadas na seguinte pasta:

C:\Arquivos de Programas\Microsoft SDKs\Windows\v6.0\NoRedist

Uma versão verificada do Ws2_32.dll que corresponde à versão do Windows e do Service Pack em que você está testando deve ser usada. Lembre-se de que os patches de segurança podem ter sido aplicados que atualizaram o Ws2_32.dll em seu sistema de teste. O SDK do Windows para Windows Vista e as assinaturas anteriores de DVD/CD do SDK (Platform Software Development Kit) incluem builds verificados para as várias versões do Windows. Você deve usar a mesma versão verificada do Ws2_32.dll que a versão de varejo que foi usada no sistema que está sendo testado. Observe também que o comportamento em execução em um build verificado não será o mesmo que executar com um build de varejo.

Nota O SDK do Windows para Windows Server 2008 e posterior não inclui mais versões especiais de depuração do Ws2_32.dll. Em vez disso, os desenvolvedores devem usar o rastreamento winsock usando ETW, pois esse recurso não requer builds de depuração.

Instalação de depuração e rastreamento do Winsock no Windows Server 2003 e no Windows XP

Versões mais antigas do Windows antes de Windows 8 e Windows Server 2012 dão suporte a uma instalação de rastreamento e depuração primitiva separada que está incluída como um exemplo com o SDK do Windows e o SDK da Plataforma mais antigo. A instalação de depuração/rastreamento só deve ser usada no Windows Server 2003 e no Windows XP em que não há suporte para o rastreamento winsock.

Se o SDK do Windows para Windows 7 estiver instalado no local padrão, esse recurso de rastreamento winsock primitivo será instalado na seguinte pasta:

C:\Arquivos de Programas\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\dt_dll

O arquivo DbgSpec.doc nesta pasta fornece documentação sobre essa instalação de rastreamento primitivo. O código de exemplo na pasta dt_dll precisa ser compilado para usar essa instalação. Os desenvolvedores são livres para usar o código-fonte para desenvolver versões da DLL de depuração/rastreamento que atendam às suas necessidades específicas.

Observe que esse recurso de rastreamento winsock primitivo só funcionará com a versão de depuração do Ws2_32.dll instalado. Portanto, você precisará obter uma versão verificada do Ws2_32.dll que corresponda à versão do Windows e ao Service Pack em que você está testando.

Uma limitação dessa instalação de rastreamento de dt_dll primitiva é que o código de exemplo usa um bloqueio global (seção crítica) para cada chamada de função Winsock. Portanto, esta instalação não é útil para lidar com as condições de corrida. O código de exemplo precisaria ser reescrito substancialmente para tornar essa instalação de rastreamento útil para lidar com a maioria dos problemas reais do Winsock (substituindo os bloqueios globais). Esse código de exemplo permite que os desenvolvedores rastreiem as chamadas de procedimento, os retornos de procedimento, os valores de parâmetro e os valores retornados.

Os desenvolvedores podem usar esse mecanismo primitivo para rastrear chamadas de procedimento, retornos de procedimento, valores de parâmetro e valores retornados. Valores de parâmetro e valores retornados podem ser alterados na chamada de procedimento ou no retorno do procedimento. Se desejado, uma chamada de procedimento pode ser impedida ou redirecionada. Com o acesso a esse nível de informações e controle, um desenvolvedor é mais capaz de isolar um problema no aplicativo, Ws2_32.dllou no provedor de serviços.

Rastreamento winsock