Solucionar problemas de erros de criação de perfil e corrigir outros problemas

Este artigo fornece soluções para alguns dos erros mais comuns que podem impedir o uso ou a obtenção de dados suficientes do Criador de Perfil de Desempenho no Visual Studio.

Sem resultados

Erro: "Não há dados no conjunto atual de filtros"

Ao abrir um arquivo diagsession, alguns filtros são aplicados, como ocultar código nativo ou código que não é de usuário para facilitar a compreensão do rastreamento. Além disso, há outros filtros que podem ser aplicados, como seleção de tempo e thread, que restringem ainda mais os dados exibidos. Se esses filtros forem aplicados de uma forma que não haja dados restantes para serem exibidos, você verá esse aviso.

Como corrigir

  • Verifique se a seleção de tempo tem dados. Se você alterou sua seleção de tempo no grafo acima dos dados, selecione Limpar Seleção para redefinir.
  • Em seguida, se ainda não houver dados, verifique se todas as categorias e threads estão habilitados em suas respectivas listas suspensas.
  • Se o aplicativo em que você está criando a criação de perfil for um código nativo, habilite a opção Mostrar Código Nativo na lista suspensa Configurações.
  • Se você ainda não tiver dados, o rastreamento que você coletou provavelmente será muito curto para que todos os dados estejam presentes. Verifique se o programa para o qual você está coletando dados não está sendo concluído muito rapidamente (menos de um segundo).

Confira também: Mostrar Código Externo

Os resultados estão demorando muito para serem concluídos

Se a análise do heap após a coleta parecer lenta para carregar, consulte as soluções possíveis a seguir que podem ajudar a resolver problemas de tempo de espera.

Como corrigir Às vezes, pode levar mais tempo para analisar instantâneos de aplicativos com uso intensivo de memória, mas a atualização para uma versão mais recente do Visual Studio deve reduzir o tempo de espera da análise. Se esse problema persistir após a atualização, pode haver um bug de desempenho na ferramenta. Crie um tíquete de comentários e compartilhe o arquivo de discagem que foi criado. Com o arquivo, podemos determinar por que os dados estão demorando para serem analisados e descobrir onde podemos fazer melhorias de desempenho.

Forneça um rastreamento e arquivos de despejo de heap no tíquete de comentários.

Consulte também:

Erro "Não foi possível criar um arquivo de manifesto para este diagsession" ou "o erro não pôde criar um arquivo de manifesto para diagsession, o Visual Studio não poderá reabrir esta sessão".

Esse problema significa que houve um problema ao preparar os dados do instantâneo de memória a serem analisados e exibidos após a interrupção para coletar dados. Há várias causas potenciais para que o problema surja, desde uma falha para obter as informações corretas dos agentes de coleta até o processamento de dados real. Portanto, não será possível diagnosticar qual é o problema sem registro em log adicional.

Como corrigir Responda ao tíquete de comentários com informações de log adicionais para que possamos diagnosticar o problema. Você pode obter as informações de log executando os seguintes comandos em um prompt de comando com privilégios elevados:

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

Depois de executar esses comandos, inicie o Visual Studio, reproduza seu cenário, feche o Visual Studio e, em seguida, compacte o diretório de log do DiagnosticsHub escolhido e anexe-o a esse tíquete. A partir desse ponto, devemos conseguir diagnosticar melhor o que está acontecendo.

Depois de adicionar o log ao tíquete, execute estes comandos para desabilitar o registro em log:

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Erro: "As informações sobre a origem não estão disponíveis."

Para exibir as informações de origem, é necessário ter PDBs disponíveis no momento da coleta. Portanto, por exemplo, se você coletar um arquivo diagsession de uso da CPU, fizer alterações no código, recompilar (que substitui o PBD antigo) e abrir .diagsession novamente, provavelmente você não poderá ver informações de origem para os módulos do código que você atualizou.

Como corrigir A solução alternativa mais fácil para esse problema é coletar um novo diagsession depois de fazer alterações. Dessa forma, você pode ter certeza de que seus PDBs estarão atualizados.

Erro: "Falha na análise de memória devido a um erro interno".

Após uma longa sessão de criação de perfil de memória, qualquer tentativa de analisar o resultado exibirá o erro.

Houve uma incompatibilidade entre as informações de instantâneo capturadas pela ferramenta de memória e a do agente de coleta. Esse resultado significa que a ferramenta de memória não foi capaz de encontrar o arquivo de estado de heap para um instantâneo nativo. Ou, com esse resultado, a ferramenta de memória não pôde corresponder a hora de início do GC do instantâneo com aquela registrada no arquivo diagsession para recuperar o GCStats.

Como corrigir Esse problema ocorreu devido a um bug na ferramenta que foi corrigido na versão 17.3. A atualização para uma versão posterior deve resolver o problema. Se o problema ainda persistir após a atualização, crie um tíquete de comentários e anexe-o ao tíquete:

  • O arquivo diagsession
  • Um minidespejo do Visual Studio
  • Uma captura de tela dos instantâneos de memória que foram tirados.

Não há uma solução alternativa para esse problema e a sessão de criação de perfil precisará ser reiniciada.

Erro: "eventos de diagnóstico X removidos, algumas informações no relatório podem estar ausentes ou incorretas"

Às vezes, durante a captura de dados, eventos podem ser removidos, o que pode fazer com que o relatório de criação de perfil resultante seja impreciso ou inutilizável. Eventos removidos podem ocorrer por vários motivos diferentes, mas principalmente quando o sistema não consegue liberar eventos para o disco mais rapidamente do que a taxa de entrada.

Como corrigir Para ajudar a reduzir a remoção de eventos, você pode fechar outras operações com uso intensivo de disco e CPU durante a criação de perfil. Ao fechar essas operações, o sistema pode dedicar mais recursos para liberar os eventos de entrada. Você também pode tentar reduzir as frequências de amostragem nas ferramentas que dão suporte a essas definições de configuração, como a ferramenta uso da CPU e a ferramenta de alocação do .NET e, assim, reduzir a sobrecarga.

Erro: os recursos do ETW foram esgotados

O criador de perfil do Visual Studio usa o ETW (Rastreamento de Eventos para Windows) para coletar suas informações de desempenho. Há um número finito de sessões ETW disponíveis para uso em um sistema e, se todas as sessões já estiverem em uso, você receberá o seguinte erro: ETW resources have been exhausted. Essas sessões são usadas por outros programas, como o conjunto de ferramentas SysInternals, outros criadores de perfil e outras ferramentas de diagnóstico. Você pode resolver esse problema por:

  • Fechar os programas que estão usando as sessões para liberar recursos ou

  • Reserve mais recursos executando o seguinte em um prompt de comando com privilégios elevados e reinicializando:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    Executar esse comando aumenta o número padrão de sessões de 64 para 128 (256 é o número máximo de sessões permitidas em um sistema).

Erro: a ferramenta de uso da CPU não funciona na VM ARM64

O criador de perfil do Visual Studio usa o ETW (Rastreamento de Eventos para Windows) para coletar suas informações de desempenho. Atualmente, a coleta de amostras de perfil usando ETW não é suportada no Windows para ARM64 ao ser executada em uma máquina virtual (VM). Para contornar essa limitação, você pode usar a ferramenta Uso da CPU em um dispositivo ARM64 real ou usar a ferramenta Instrumentação para capturar as informações de tempo.

Erro: a ferramenta de uso de memória não funciona no .NET 7 e no runtime do .NET 8.0.0-8.0.1 com a coleta de lixo do servidor habilitada

Devido a um problema introduzido com o runtime do .NET 7 e propagado para as versões de runtime do .NET 8 8.0.0 e 8.0.1, não é possível enumerar objetos ao usar a coleta de lixo do servidor. A coleta de lixo do servidor é habilitada por padrão para aplicativos do ASP.NET Core.

Como corrigir

Para contornar este problema:

  • Desabilite a coleta de lixo do servidor ao tirar um instantâneo ou coletar um despejo do aplicativo.
  • Use uma versão não afetada do runtime do .NET.

Consulte também: