Como Encontrar e Corrigir Bugs em Software Comercial no Windows

de Acordo com a Wikipedia, “Uma software bug é um erro, uma falha, uma falha ou avaria em um programa de computador ou sistema que faz com que ele produzir um incorreto ou resultado inesperado, ou comportar-se de formas não intencionais, eventualmente, bloquear o aplicativo. O processo de correção de bugs é denominado “depuração” e geralmente usa técnicas ou ferramentas formais para identificar bugs .”

na maioria das vezes, os bugs podem ser reproduzidos em um ambiente de desenvolvedor e corrigidos antes de enviar uma versão para a produção. Mas às vezes os bugs dependem do ambiente ou perfil específico dos usuários—por exemplo, usando caracteres especiais em um nome de pasta—tornando mais difícil entender a causa raiz de um bug. Os piores bugs exigirão suporte ao Usuário para configurar uma sessão de compartilhamento de tela para assistir um usuário reproduzir um bug.

no Dashlane, a equipe do Windows usa várias ferramentas para encontrar e reproduzir bugs:

  • Técnico de logs para o lugar onde os problemas surgem, e ajudam a corrigi-los, às vezes exigindo várias iterações e a interação com o usuário que está enfrentando um problema
  • Microsoft Processo de Monitorar o Processo Explorer, duas ferramentas gratuitas que o pinpoint ruim instalações ou corrompido ambiente

Recentemente, a Microsoft apresentou uma nova versão de uma outra ferramenta de desenvolvimento, o WinDbg. Este aplicativo foi portado em um aplicativo UWP, está disponível gratuitamente na Microsoft Store e vem com um recurso muito bom e útil: TTD ou Depuração de viagem no tempo. Pense em um momento em que você teve que corrigir um bug muito difícil de reproduzir que estava acontecendo apenas em uma máquina específica. Ou pense no tempo que você passou instalando um ambiente de desenvolvedor nessa máquina-se puder. E então pense em quantas vezes você teve que iniciar seu aplicativo no modo de depuração para reproduzir o bug, e então você perdeu a linha corrompida acidentalmente batendo F5 em vez de F11. O TTD transforma isso em um pedaço de bolo, pois você só precisa gravar o bug uma vez para permitir que você o repita repetidamente, tanto para frente quanto para trás.

Depuração de viagem no tempo com WinDbg

TTD é uma solução de depuração reversa. Consiste em 3 etapas:

  1. grave o aplicativo ou processo na máquina que pode reproduzir o bug. Use WinDbg com direitos de administrador e inicie um executável ou anexe a um já em execução para registrar seu rastreamento. O resultado é um arquivo (.executar extensão) contendo todas as informações para reproduzir o bug. Por esse motivo, no Dashlane podemos usá-lo apenas para depurar bugs que acontecem antes do login para não coletar informações confidenciais dos usuários.
  2. repita o traço gravado para frente e para trás quantas vezes forem necessárias para entender o problema. Uma vez carregado, WinDbg cria um índice do traço, que fornece pesquisa de memória completa e rápida. O arquivo gravado pode ser carregado em qualquer máquina; geralmente abrimos em uma máquina de desenvolvedor, onde podemos carregar o código-fonte e os símbolos PDB. Dessa forma, podemos reproduzir o rastreamento enquanto executamos o código em nosso IDE com registros de processo e memória da máquina gravada. (Certifique-se de que o código-fonte e os símbolos correspondam à versão do processo gravado.)
  3. analise adicionando pontos de interrupção, execute consultas para identificar problemas comuns de código e obtenha acesso total à memória e aos locais para entender o que está acontecendo.

exemplo

suponha que você tenha escrito e construído um aplicativo de console simples.

void GuiltyFunction(int a, int b, int c)
{
int x = a + b + c;
int y = 0;
y = x / b;
}
int main()
{
int a = 10;
int b = 0;
int c = 3;
GuiltyFunction(a, b, c);
return 0;
}

Vamos supor que o aplicativo construído (TestTTD.exe) e o arquivo de Símbolo (TestTTD.pdb) estão em C:\TestTTD\bin, e o código fonte está em C:\TestTTD\src.

registro

  1. WinDbg aberto com direitos elevados.
  2. na guia Arquivo, escolha Iniciar executável (avançado). No campo executável, digite C:\TestTTD\TestTTD.exe. Verifique o processo de registro com a depuração de viagem no tempo, defina o diretório de saída como um caminho gravável e existente e clique em OK.
  3. como o aplicativo trava, WinDbg salva um arquivo de rastreamento (.executar extensão) e registra o local ao carregá-lo.
  4. pare o depurador e abra o local do arquivo de rastreamento.

Repetição

  1. WinDbg Aberto.
  2. na guia Arquivo, selecione Configurações na barra lateral esquerda. Selecione Configurações de depuração, adicionar C:\TestTTD\src para o campo caminho de origem e C:\TestTTD\bin para o campo do Caminho do símbolo. Clique em OK para salvar as alterações.
  3. na guia Arquivo, selecione Abrir arquivo de rastreamento e navegue até o arquivo de rastreamento criado na etapa registro.

analisar

  1. uma vez que o arquivo de rastreamento gravado é carregado no WinDbg, adicione um ponto de interrupção para parar e analisar o estado do aplicativo. Carregue um arquivo de script na guia Origem e clique no lado esquerdo da linha do ponto de interrupção desejado. Bata F5 para correr para o ponto de interrupção.
  2. agora clique em F10 para passar, como em uma sessão de depuração do Visual Studio. Clique em Passo para trás para correr para trás.

Conclusões

Quando a depuração de código de produção e dificilmente reproduzível bugs, o WinDbg e seu Tempo de Viagem de Depuração são uma ótima ferramenta para desenvolvedores que podem ajudar a poupar tempo e recursos de gravação com defeito aplicação apenas no ambiente afetado e dando-lhe a capacidade de reproduzi-lo em qualquer lugar. Para obter mais informações, visite o blog da Microsoft ou assista à demonstração no site do MSDN Channel 9.

Leave a Reply

O seu endereço de email não será publicado.