Partilhar via


Recursos de depuração e rastreamento

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

  • O pedido.
  • O Ws2_32.dll ou uma das DLLs de shim de compatibilidade.
  • O prestador 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 de Winsock usando o Rastreamento de Eventos para Windows

O suporte integrado para rastreamento Winsock usando o Rastreamento de Eventos para Windows (ETW) está incluído no Windows Vista e posterior. Este é o método preferido para rastrear chamadas Winsock no Windows Vista e posterior. O rastreamento Winsock usando ETW é leve e funciona em versões de varejo do Windows. Não são necessários softwares ou componentes adicionais. Esse recurso só precisa ser habilitado no Windows Vista e posterior. Para obter informações mais detalhadas, consulte os tópicos Winsock Tracing.

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 Windows Vista e no rastreamento Winsock permite que todas as chamadas de procedimento na API ou SPI do Windows Sockets 2 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 estão localizadas na seguinte pasta:

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

Deve ser utilizada uma versão verificada do Ws2_32.dll que corresponda à versão do Windows e ao Service Pack em que está a testar. Lembre-se de que podem ter sido aplicados patches de segurança que atualizaram o Ws2_32.dll no seu sistema de teste. O SDK do Windows para Windows Vista e as assinaturas anteriores do Platform Software Development Kit (SDK) DVD/CD incluem compilações verificadas para as várias versões do Windows. Você deve usar a mesma versão verificada do Ws2_32.dll que a versão comercial que foi usada no sistema que está sendo testado. Observe também que o comportamento em execução sob uma compilação verificada não será o mesmo que executar com uma compilação de varejo.

Observação O SDK do Windows para Windows Server 2008 e versões posteriores não inclui mais versões especiais de depuração do Ws2_32.dll. Os desenvolvedores devem usar o rastreamento Winsock usando ETW em vez disso, uma vez que esse recurso não requer compilações de depuração.

Winsock Debug and Trace Facility no Windows Server 2003 e Windows XP

As versões mais antigas do Windows anteriores ao Windows 8 e ao Windows Server 2012 oferecem suporte a um recurso de depuração e rastreamento primitivo separado que é incluído como um exemplo com o SDK do Windows e o SDK da plataforma mais antigo. O recurso de depuração/rastreamento só deve ser usado no Windows Server 2003 e no Windows XP onde o rastreamento Winsock não é suportado.

Se o SDK do Windows para Windows 7 estiver instalado no local padrão, esse recurso primitivo de rastreamento Winsock 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 esse recurso de rastreamento primitivo. O código de exemplo na pasta dt_dll precisa ser compilado para usar esse recurso. 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 primitivo de rastreamento Winsock 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 desse recurso primitivo de rastreamento de dt_dll é que o código de exemplo usa um bloqueio global (seção crítica) para cada chamada de função Winsock. Portanto, esta facilidade não é útil para lidar com as condições de corrida. O código de exemplo precisaria ser substancialmente reescrito para tornar esse recurso de rastreamento útil para lidar com a maioria dos problemas reais do Winsock (substituindo os bloqueios globais). Este código de exemplo permite que os desenvolvedores rastreiem as chamadas de procedimento, retornos de procedimento, valores de parâmetro e valores de retorno.

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

Winsock Tracing