Depuração da Viagem no Tempo no Visual Studio Enterprise 2019

A versão de visualização do Time Travel Debugging (TTD) no Visual Studio Enterprise 2019 permite registrar a execução de um aplicativo Web em execução em uma máquina virtual do Azure e, em seguida, restaurar e reproduzir com precisão o algoritmo. O TTD se integra à nossa oferta do Snapshot Debugger e permite que você retroceda e reproduza cada linha de código quantas vezes quiser, ajudando a identificar e prever problemas que só podem ocorrer em ambientes de combate.


A foto é tirada da página do jogo Quantum Break (18+) na Microsoft Store. A propósito, há um desconto de 75% (US $ 10). Se alguém quiser, mas não encontrar a oportunidade, recomendamos.



O tipo mais eficiente de depuração geralmente ocorre no chamado "loop interno". Quando você exibe e depura o código localmente antes de passar para o controle de versão. Os problemas que enfrentamos durante o desenvolvimento do ciclo interno geralmente são mais fáceis de entender e diagnosticar porque são acessíveis e repetíveis.

imagem

Hoje, temos o prazer de anunciar o lançamento do TTD (Time Travel Debugging) no Visual Studio Enterprise. Com o TTD, oferecemos a capacidade de escrever código executado em um ambiente de produção e reproduzir o caminho de execução no Visual Studio. O TTD também oferece a capacidade de ir e voltar no tempo, como se você estivesse fazendo uma depuração local do "loop interno". Você também obtém acesso a recursos importantes de depuração, como locais e a pilha de chamadas.

Depuradores modernos geralmente permitem que você pare em um determinado ponto (ponto de interrupção), interrompendo todo o processo e só então avançando. Mesmo com ferramentas de depuração mais avançadas, como o IntelliTrace , você grava eventos e dados em momentos distintos. O TTD possui uma vantagem significativa em relação aos arquivos de instantâneos, log ou despejo de memória, pois esses métodos geralmente não contêm informações precisas sobre o caminho de execução que levou à falha ou erro final.

O que é depuração de viagens no tempo?


A Time Travel Debugging (TTD) é uma solução de depuração reversa que permite gravar a execução do código em um aplicativo ou processo e reproduzi-lo. O TTD aprimora a depuração, pois você pode voltar no tempo para entender melhor as condições que levam a um erro específico. Além disso, você pode reproduzi-lo várias vezes para descobrir a melhor maneira de corrigir o problema. A tecnologia TTD foi introduzida recentemente na versão de visualização do WinDbg para scripts com código nativo .

Expandimos o Snapshot Debugger com TTD para que você possa gravar aplicativos enquanto eles são executados. Esse registro pode ser reproduzido no Visual Studio Enterprise 2019, onde você pode retroceder e reproduzir cada linha de código quantas vezes quiser. O TTD grava em um encadeamento que atende às condições do ponto de snap e geralmente é executado até o final do método. Mas se antes do final do método após o snappoint houver "aguardar", a gravação será interrompida. Esse recurso estará na visualização do lançamento do Visual Studio 2019 com uma licença válida. Planejamos adicionar mais scripts TTD em futuras atualizações.

Introdução ao TTD


A visualização de depuração de viagens no tempo pode ser habilitada na versão mais recente do Visual Studio Enterprise 2019 para máquinas virtuais do Azure executando o Windows com ASP.NET (4.8+).

Após instalar a versão mais recente do Visual Studio Enterprise, execute as seguintes etapas:

1. Abra o projeto exigido pela Time Travel Debug - verifique se você tem a mesma versão do código-fonte publicada na máquina virtual do Azure.

2. Selecione Debug> Attach Snapshot Debugger e selecione a máquina virtual do Azure na qual seu projeto está implantado junto com a conta de armazenamento do Azure. Na primeira vez que você tentar se conectar, será necessário instalar a extensão do site do Snapshot Debugger.

3. Selecione a opção Depuração da viagem no tempo e clique no botão Anexar . Uma vez que o Visual Studio entre no modo Snapshot Debugger, ele poderá gravar usando o TTD.

imagem

4. Crie o snappoint e configure-o para ativar a Depuração de viagens no tempo. Clique em Iniciar \ Atualizar coleção .

imagem

5. Após a compilação do Snapshot, clique em Exibir Snapshot e você pode usar a barra de comandos para ir e voltar no método gravado.

imagem

Limitações da visualização TTD
No estágio de visualização inicial do TTD, ofereceremos suporte a aplicativos da Web AMD64 em execução em uma máquina virtual do Azure. Esperamos que a entrada adicione uma sobrecarga significativa ao processo em execução, diminuindo a velocidade, dependendo do tamanho do processo e do número de threads ativos. Também esperamos degradação de depuração em alguns dos seguintes cenários:

  • Durante a fase de compactação do GC.
  • Passando por um método otimizado, por exemplo, quando você insere um método que não contém snappoint.
  • Se o seu aplicativo fizer o download ou descarregar internamente os domínios do aplicativo.
  • A gravação ocorre apenas no fluxo que foi chamado pelo snappoint. O código que posteriormente afeta threads alternativos também será degradado.

Observe: também não registraremos relações de causa e efeito assíncronas.

Durante os testes preliminares, descobrimos que o tamanho do arquivo TTD variava de algumas centenas de megabytes a vários gigabytes, dependendo da duração da sessão e da duração do aplicativo da web. No entanto, os arquivos criados pelo TTD serão limpos depois que a sessão do Snapshot Debugger for concluída e o pool de aplicativos for reiniciado. Para nosso pré-lançamento, também recomendamos o uso de uma máquina virtual com pelo menos 8 GB de RAM.

Experimente o TTD agora!


Estamos incrivelmente entusiasmados com a forma como esse recurso de visualização pode ajudar a melhorar a depuração no Azure, mas isso é apenas o começo. Nossa equipe continua a desenvolver e criar recursos TTD adicionais que planejamos adicionar nas próximas versões do Visual Studio.

Aguardamos seu feedback!

Source: https://habr.com/ru/post/pt447998/


All Articles